简体   繁体   English

button.setOnClicklistener不幸的是,导致开普勒app_name停止

[英]button.setOnClicklistener cause unfortunately app_name has stopped in kepler

I have an app that contain 4 buttons , 2 in MainActivity and 2 in custom Dialog. 我有一个包含4个按钮的应用程序,其中2个位于MainActivity中,而2个位于自定义对话框中。 when I call setOnClickListener() for 2 buttons in custom Dialog , it cause Unfortunately (app_name) has stopped in virtual machine 当我在自定义对话框中为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;
    }
}

}
it cause Unfortunately (app_name) has stopped in virtual machine

Because you are not initializing that two buttons with dialog view. 因为您没有用对话框视图初始化这两个按钮。 your are trying to initialize the that two buttons from R.layout.activity_main where they don't exists. 您正在尝试初始化R.layout.activity_main中不存在的两个按钮。

Try following code for both dialog buttons 尝试对两个dialog buttons都遵循以下代码

In following code [for example] i am assuming that your btnCancel is inside dialog ( R.layout.get_task_dialog ) 在下面的代码中,例如,我假设您的btnCanceldialogR.layout.get_task_dialog

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM