0
我有一個列表視圖,當我點擊一個項目時,它應該顯示一個帶有Radiobuttons的AlertDialog。但是當調用alertDialog時,應用程序崩潰。 Logcat給出了一個NullPointerException。我究竟做錯了什麼?Android - 空指針異常點擊listitem顯示AlertDialog
private void registerClickCallBack() {
ListView list = (ListView) findViewById(R.id.settingsList);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
if (position == 0) {
final AlertDialog levelDialog
final CharSequence[] items = { " Easy ", " Medium ",
" Hard ", " Very Hard " };
AlertDialog.Builder builder = new AlertDialog.Builder(
MyActivity.this);
builder.setTitle("Select The Difficulty Level");
builder.setSingleChoiceItems(items, -1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int item) {
Intent i = new Intent(
getApplictionContext(),
MyActivity.class);
switch (item) {
case 0:
String msg = "Alert A";
Toast.makeText(
MyActivity.this,
msg, Toast.LENGTH_LONG).show();
break;
case 1:
String msga = "Alert B";
Toast.makeText(
MyActivity.this,
msga, Toast.LENGTH_LONG).show();
break;
case 2:
String msgz = "Alert C";
Toast.makeText(
MyActivity.this,
msgz, Toast.LENGTH_LONG).show();
break;
case 3:
String msge = "Alert E";
Toast.makeText(
MyActivity.this,
msge, Toast.LENGTH_LONG).show();
break;
}
}
});
levelDialog.dismiss();
levelDialog = builder.create();
levelDialog.show();
}
else if (position == 1) {
String msg = "1";
Toast.makeText(MyActivity.this, msg,
Toast.LENGTH_LONG).show();
} else if (position == 2) {
String msg = "2";
Toast.makeText(MyActivity.this, msg,
Toast.LENGTH_LONG).show();
}
else if (position == 3) {
String msg = "3";
Toast.makeText(MyActivity.this, msg,
Toast.LENGTH_LONG).show();
}
}
});
}
對話框不顯示爲'解僱()''後.show()'方法稱爲立竿見影。 – user370305
@ user370305我知道,這就是爲什麼我說「但我不確定你爲什麼要調用'dismiss()'」。應該修復'NPE' OP當前正在獲取,但是沒有意義在那裏 – codeMagic
我改變了它,就像你說的,現在它沒有崩潰,但它沒有按下時做任何事情。我按照這個教程來完成這個。 http://learnandroideasily.blogspot.be/2013/01/adding-radio-buttons-in-dialog.html他們像這樣把'levelDialog.dismiss(); } }); levelDialog = builder.create(); levelDialog.show();' – mXX