button.setOnClicklistener导致不幸的是app_name已在kepler中停止

时间:2013-10-15 13:13:23

标签: android onclicklistener eclipse-kepler

我的应用程序包含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;
    }
}

}

1 个答案:

答案 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);