2016-08-31 2 views
0

Ich bin neu in Android-Entwicklung, so ist dies wahrscheinlich eine einfache Frage. Es ist Button im Layout definiert, aber beim Start der Aktivität im Debugger ist dieser Button null. Wie kann das passieren?
Android. NullReferenceException von Button

<Button 
     android:id="@+id/show_answer_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/show_answer_button"/> 

Aktivität:

 private Button mShowAnswer; 
     mShowAnswer = (Button)findViewById(R.id.show_answer_button); 
     mShowAnswer.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       if (mAnswerIsTrue) { 
        mAnswerTextView.setText(R.string.true_button); 
       } 
       else { 
        mAnswerTextView.setText(R.string.false_button); 
       } 
      } 
     }); 
+2

Haben Sie 'setContentView()', bevor der obige Code genannt. Stellen Sie außerdem sicher, dass Sie auf die richtige Layoutdatei verweisen. – Shaishav

+0

überprüfen Sie Ihre 'TextView' ist korrekt initialisiert oder nicht –

+0

@Shaishav, nein, setContentView() sicherlich danach aufgerufen. –

Antwort

0

Nach dieser commentsetContentView() Methode ist in der falschen Stelle, ist es muss vorhanden sein, bevor Schaltfläche Variable und Schaltfläche XML-Ansicht verbindlich.

setContentView(R.layout.your_xml_layout_name); 
private Button mShowAnswer; 
mShowAnswer = (Button)findViewById(R.id.show_answer_button); 
1

versuchen Sie dies:

private Button mShowAnswer; 

     @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       try { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_login); 

    mShowAnswer = (Button)findViewById(R.id.show_answer_button); 
      mShowAnswer.setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        if (mAnswerIsTrue) { 
         mAnswerTextView.setText(R.string.true_button); 
        } 
        else { 
         mAnswerTextView.setText(R.string.false_button); 
        } 
       } 
      }); 

      }