2015-05-30 96 views
-2

我已經開始在android中開發。我試圖做一個文字遊戲,最後我應該在對話框中顯示玩家的結果。我在佈局中有一個textView,並嘗試使用setText()應用程序崩潰。否則,將顯示自定義對話框。需要幫忙。自定義對話框的setText()導致應用程序崩潰

@Override 
    public void onClick(View v) { 
    switch (v.getId()){ 
     case R.id.butt_submit: 
      puzzword.validateAnswer(); 
      puzzword.resetStrings(); 
      init(); 
      if(count==10){ 
       showScore(); 
       count=0; 
       // finish(); 
      } 
      break; 
     case R.id.butt_share: 
      break; 
    } 
    } 


public void showScore(){ 
    Dialog d = new Dialog(this); 
    d.setContentView(R.layout.dialog1_layout); 
    d.setTitle("Your Score"); 
    TextView correctAns = (TextView) findViewById(R.id.correctAns); 
    correctAns.setText("Correct Answers"); 
    d.show(); 
} 

定製對話框的佈局文件在這裏。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent" 
android:background="@color/back_color"> 

<TextView 
    android:id="@+id/correctAns" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:textColor="@color/text_color" 
    android:textSize="25dp" 
    /> 
<TextView 
    android:id="@+id/wrongAns" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/correctAns" 
    android:layout_marginTop="30dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:textColor="@color/text_color" 
    android:textStyle="bold" 
    android:textSize="25dp" 
    /> 

</RelativeLayout> 
+0

什麼是你的logcat崩潰訊息話題? –

+0

您需要在Dialog對象上調用'findViewById()'來獲得對'TextView'的引用。 –

+0

我得到這個錯誤logcat java.lang.NullPointerException:試圖調用虛擬方法'無效android.widget.TextView.setText(java.lang.CharSequence)'對空對象引用 –

回答

3

問題是您試圖從活動內容視圖中獲取視圖,而不是從對話框視圖hirarchy中獲取視圖。 相反的:

TextView correctAns = (TextView) findViewById(R.id.correctAns); 

寫:

TextView correctAns = (TextView) dialog.findViewById(R.id.correctAns); 
0

試試這個:

TextView correctAns = (TextView) dialog.findViewById(R.id.correctAns);