0
我正在嘗試創建一系列可以在Android中執行的對話框菜單。 (基本上嘲笑Android中的USSD交互)。每個對話框都是一個包含編號選項的文本視圖菜單,供用戶輸入其編號選擇的EditText視圖,以及兩個按鈕Cancel和Send(進入下一步)。動態更新自定義佈局中的文本對話框,NPE - Android
雖然我可以讓我的第一個主菜單對話框顯示爲我想要的,但我的對話框文本動態更新時遇到了很多麻煩。當我嘗試調用TextView來設置文本時,它會一直給我一個NPE,我不知道爲什麼!
這裏是我的活動的初始代碼(該對話框立即彈出時啓動)
TextView txtContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_menu);
}
protected void onStart() {
super.onStart();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Get the layout inflater
LayoutInflater inflater = this.getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.main_menu_dialog, null))
// Add action buttons
.setPositiveButton(R.string.send, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// Send number to next dialog
FirstTimeUse();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// End session
}
});
AlertDialog dialog = builder.create();
TextView txtContent = (TextView)findViewById(R.id.main_menu_options);
txtContent.setText(R.string.MainMenuText);
dialog.show();
}
這裏是爲通用對話框視圖(稱爲主菜單,現在的佈局,但會更名爲通用的,如果我能得到這個工作)。 TextView的不包含任何文本,現在,因爲我希望它能夠動態地投入:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/main_menu_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp" />
<EditText
android:id="@+id/choice"
android:inputType="textShortMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="16dp" />
當我運行它,我得到這個錯誤:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
沒有我試過正在工作,所以任何幫助將不勝感激!謝謝!
嘿,成功了!非常感謝!!你碰巧知道這是爲什麼?單獨創建一個視圖和上面的內容有什麼區別,它直接來自Android Dialog教程? – notchopra
您正在搜索活動(或片段)視圖層次結構中的文本視圖。但對話框有自己的層次結構視圖(甚至是單獨顯示的窗口),因此您應該在後者中搜索它。 –
明白了。再次感謝! – notchopra