Search code examples
javaandroidbuttonandroid-alertdialog

The button that I have created does not work. Is there something wrong with my code?


I am building an app in Android studio and basically I want a window to popup when a user clicks the add button. I used the setOnClickListener but when I run the app, nothing happens. Could there possibly something wrong with my code?

Here's my MainActivity code

public class MainActivity extends AppCompatActivity {

Button addBtn;
ListView itemListView;
DatePickerDialog.OnDateSetListener dateSetListener;
String dateString = null;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    addBtn = (Button)findViewById(R.id.addBtn);
    itemListView = (ListView)findViewById(R.id.itemListView);

    addBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            View view = getLayoutInflater().inflate(R.layout.activity_popup_window, null);
            EditText itemName = (EditText)view.findViewById(R.id.itemName);
            Button expirationDateBtn = (Button)view.findViewById(R.id.expirationDateBtn);

            builder.setView(view)
                    .setTitle("Add Item")
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    })
                    .setPositiveButton("Add", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (itemName.getText().toString().isEmpty() || dateString == null) {
                                Toast.makeText(MainActivity.this,
                                        "Item name or expiration date is missing",
                                        Toast.LENGTH_LONG).show();
                            }
                            else{
                                //do action
                            }
                        }
                    });

            //when clicked on Expiration Date Btn
            
            //display date on button
           

Solution

  • AlertDialogBuilder doesn't create and show a new AlertDialog implicitly. It only prepares the dialog before explicitly calling create() (or you can directly call show() if you need to display your dialog in the moment it gets built). Your code misses the following lines at the end of onClick():

    AlertDialog dialog = builder.create();
    dialog.show();
    

    or just:

    builder.show();