2016-12-05 52 views
0

創建對話框我收到此錯誤java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object referenceERROR在Android Studio中

我嘗試設置文本後,但沒有運氣改變的setContentView。 即使認爲我搜索了,我也找不到我做錯了什麼。

這是我的對話框創建。當我從textview設置文本時出現錯誤。

public void forgetDialog() { 
     final Dialog dialog = new Dialog(this); // Context, this, etc. 

     dialog.setTitle(R.string.dialog_title2); 

     // dialog.setOnDismissListener(dialog.dismiss();); 
     dialog.setContentView(R.layout.dialog); 
     TextView txv = (TextView)findViewById(R.id.dialog_info); 
     txv.setText(""); 
     txv.setText("You forgot to add the ingredients!"); 

     dialog.show(); 
     btn_dialog = (Button) dialog.findViewById(R.id.dialog_ok) ; 
     btn_dialog.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       dialog.cancel(); 
      } 
     }); 
    } 

這裏是我使用

<?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="wrap_content"> 

    <TextView 
     android:id="@+id/dialog_info" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:text="@string/dialog_text"/> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:layout_below="@id/dialog_info"> 



     <Button 
      android:id="@+id/dialog_ok" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="0.50" 
      android:background="@color/dialog_ok_bgcolor" 
      android:text="Ok, got it"/> 
    </LinearLayout> 
</RelativeLayout> 

回答

2

第一步
寫兩個單獨的XML文件的,一個是活動的佈局XML(activity.xml),一個用於對話框的佈局(dialog.xml)。確保您的dialog.xml包含您需要的TextView和Button。

第二步
,我把在下一步的代碼之前聲明
Button btn_dialog; TextView txv;

第三步
試試這個代碼,我試過了,它工作。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity); 
    forgetDialog(); 
} 

public void forgetDialog() { 
    final Dialog dialog = new Dialog(this); // Context, this, etc. 
    dialog.setTitle("Title"); 

    // dialog.setOnDismissListener(dialog.dismiss();); 
    dialog.setContentView(R.layout.dialog); 
    txv = (TextView) dialog.findViewById(R.id.dialog_info); 
    txv.setText(""); 
    txv.setText("You forgot to add the ingredients!"); 

    dialog.show(); 

    btn_dialog = (Button) dialog.findViewById(R.id.dialog_ok); 
    btn_dialog.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.cancel(); 
     } 
    }); 
} 

我認爲錯誤是:
1)佈局的管理;
2)你忘記告訴你想在哪個視圖中找到TextView的id。

+0

Yeap它是數字2.我把對話框在findViewById前,它的工作!謝謝! – Newera