Android: aktivieren.isChecked() ist immer die Rückgabe einer falschen Bedingung

Ich versuche code eine checkbox in ein Hilfe-Bildschirm ist im wesentlichen ein pop-up-anzeigen, (eine Tätigkeit, die begann, indem Sie das Hauptprogramm), die eine ScrollView, die hat den Hilfe-text, und den OK-button und eine checkbox, die fragt, ob Sie möchten, die Hilfe-Bildschirm erscheint automatisch beim start des Programms. Alles zeigt korrekt auf dem Bildschirm angezeigt, und die checkbox schaltet, wenn man Sie berührt. Allerdings, wenn OK gedrückt wird, und ich Teste den Zustand der checkbox mit .isChecked() ich bin immer ein false. Ich bin sicher, es ist einfach etwas, die ich verpasst habe. XML-Datei folgt folgt:

helpdialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent" android:layout_height="wrap_content"
 android:background="#ffffff">

 <ScrollView android:id="@+id/ScrollView01"
 android:layout_width="wrap_content" android:layout_below="@+id/ImageView01"
 android:layout_height="300px">

 <TextView android:text="@+id/helpView" android:id="@+id/helpView"
 android:layout_width="wrap_content" android:layout_height="wrap_content"
 android:textColor="#000000"/>

</ScrollView>
<Button android:id="@+id/Button01" 
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_centerHorizontal="true" android:text="  OK  "
android:layout_below="@id/ScrollView01"/>

<CheckBox android:id="@+id/chkNoHelp" android:textColor="#000000"
android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:text="Don't Display at Startup"
android:layout_below="@id/Button01"        />  

</RelativeLayout>

HelpBox.java:

public class HelpBox extends Activity {

CheckBox checkBox;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     //set up dialog
    Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.helpdialog);
    dialog.setTitle("Help");
    dialog.setCancelable(true);

    //set up text
    TextView text = (TextView) dialog.findViewById(R.id.helpView);
    text.setText(getString(R.string.help_text));

    //set up button
    Button button = (Button) dialog.findViewById(R.id.Button01);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Boolean mDisplayHelp;

            setContentView(R.layout.helpdialog);

            checkBox = (CheckBox) findViewById(R.id.chkNoHelp);
            if (checkBox.isChecked()) {
                mDisplayHelp = true;
            } else {
                mDisplayHelp = false;
            }
            finish();
        }
    });
    //now that the dialog is set up, it's time to show it    
    dialog.show();
}
}

Haltepunkte auf beiden "mDisplayHelp" Linien bricht immer an der 'false' - Zweig unabhängig davon, ob das Kontrollkästchen zeigt ein grünes Häkchen oder nicht, wenn die OK Schaltfläche gedrückt wird.

Vielen Dank im Voraus.

Bearbeiten (10/10):

Seiner klaren, was ich will zu tun ist, Holen Sie sich Informationen, nachdem der Benutzer beendet den dialog, so kann ich Einblick in den Status der checkbox und speichern Sie es als eine Voreinstellung. Für dieses ich nehme an, ich habe um es zu testen in onDestory. So, ich hab das:

@Override
public void onDestroy() {
    Boolean mDisplayHelp;

    setContentView(R.layout.helpdialog);        
    checkBox = (CheckBox) findViewById(R.id.chkNoHelp);
    if (checkBox.isChecked()) {
        mDisplayHelp = true;
    } else {
        mDisplayHelp = false;
    }

}

Allerdings bin ich noch immer mit FALSE als Ergebnis, unabhängig davon, ob das Kontrollkästchen anzeigen aktiviert oder deaktiviert. In diesem Beispiel, wenn ich don'; t die setContentView, bekomme ich eine NullPointerException auf die isChecked.

  • Warum sind Sie die Einstellung der contentView zweimal?
  • Mangel an Verständnis oder Erfahrung, denke ich. Noch kann nicht machen diese Arbeit, wie ich denke, es sollte.
InformationsquelleAutor Jeff S | 2011-10-07
Schreibe einen Kommentar