【问题标题】:button.setOnClicklistener cause unfortunately app_name has stopped in keplerbutton.setOnClicklistener 不幸的是,app_name 已在开普勒中停止
【发布时间】:2013-10-16 01:08:10
【问题描述】:

我有一个包含 4 个按钮的应用程序,2 个在 MainActivity 中,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;
    }
}

}

【问题讨论】:

  • 对话框按钮初始化如下 btn=(Button)dialog.findViewById(R.id.dialog_btn);
  • 不适用于 (btn=(Button)dialog.findViewById(R.id.dialog_btn);)

标签: android onclicklistener eclipse-kepler


【解决方案1】:
it cause Unfortunately (app_name) has stopped in virtual machine

因为您没有使用对话框视图初始化这两个按钮。您正在尝试从 R.layout.activity_main 初始化它们不存在的那两个按钮。

尝试以下代码dialog buttons

在以下代码中 [例如] 我假设您的 btnCanceldialog (R.layout.get_task_dialog) 内

btnCancel = (Button)getLayoutInflater().inflate(R.layout.get_task_dialog, null).findViewById(R.id.btnCancel);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2017-05-03
    • 2016-10-20
    • 2014-01-04
    相关资源
    最近更新 更多