Search code examples
androidonclicklistenereclipse-kepler

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. when I call setOnClickListener() for 2 buttons in custom Dialog , it cause Unfortunately (app_name) has stopped in virtual machine

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;
    }
}

}

Solution

  • 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.

    Try following code for both dialog buttons

    In following code [for example] i am assuming that your btnCancel is inside dialog (R.layout.get_task_dialog)

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