我的应用程序包含4个按钮,MainActivity中有2个,自定义对话框中有2个。 当我在自定义对话框中为2个按钮调用setOnClickListener()时,它导致不幸(app_name)已在虚拟机中停止
public class MainActivity extends Activity implements OnClickListener{
Button btnAdd;
Button btnSet;
Button btnDlt;
Button btnCancel;
Dialog getDialog = new Dialog(this);
ListView taskList;
EditText getTask;
ArrayList<String> listItem = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpVeiw();
setUpListView();
setUpOnClick();
}
private void setUpVeiw() {
btnAdd = (Button) findViewById(R.id.btnAddTask);
btnDlt = (Button) findViewById(R.id.btnDlt);
btnSet = (Button) findViewById(R.id.btnSet);
btnCancel = (Button) findViewById(R.id.btnCancel);
getTask = (EditText) findViewById(R.id.editText1);
}
private void setUpListView() {
taskList = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listItem);
taskList.setAdapter(adapter);
listItem.add("Ali");
}
private void setUpOnClick() {
btnAdd.setOnClickListener(this);
btnDlt.setOnClickListener(this);
btnSet.setOnClickListener(this);
btnCancel.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnAddTask:
getDialog.setContentView(R.layout.get_task_dialog);
getDialog.setTitle(R.string.add_task);
getDialog.show();
break;
case R.id.btnDlt:
break;
case R.id.btnSet:
break;
case R.id.btnCancel:
break;
default:
break;
}
}
}
答案 0 :(得分:1)
it cause Unfortunately (app_name) has stopped in virtual machine
因为您没有使用对话框视图初始化这两个按钮。您正试图初始化R.layout.activity_main
中不存在的那两个按钮。
请尝试以下dialog buttons
在以下代码中[例如]我假设您的btnCancel
位于dialog
内(R.layout.get_task_dialog
)
btnCancel = (Button)getLayoutInflater().inflate(R.layout.get_task_dialog, null).findViewById(R.id.btnCancel);