Home » Android » Dialog does not appear

Dialog does not appear

Posted by: admin November 1, 2017 Leave a comment

Questions:

I use following code:

public class Settings extends Activity implements OnClickListener {

    private Activity activity;
    private AlertDialog.Builder builder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.settings);

        Button bAdd = (Button) findViewById(R.id.bAdd);
        bAdd.setOnClickListener(this);

        activity = this;
        builder = new AlertDialog.Builder(activity);
        builder.setMessage("message")
           .setTitle("title");

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bAdd:
            AlertDialog dialog = builder.create();
            break;
        }

    }


}

But for some reason my popup doesn’t appear and does nothing at all.. Any ideas on what is causing this malfunction? Thanks!

Answers:

You have to call show() method instead of create().

Note: create() method only creates instance of Dialog but it won’t show its.

One suggestion:

You can create method that returns Dialog like this:

public Dialog createNewDialog(int type) {
   AlertDialog dlg = null;
   switch (type) {
      case SOME_CONSTANT:
         dlg = new AlertDialog.Builder(ActivityName.this / this)
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton("Yes", null)
            .create();
      break;
   }
}

Then you can call it as:

createNewDialog(SOME_CONSTANT).show();

and your Dialog will be shown.

Especially in your case you can reach your goal with this snippet of code:

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bAdd:
            createNewDialog(SOME_CONSTANT).show();
            break;
        }
    }

Hope it helps.

Questions:
Answers:

you need to call ‘builder.show()`.

Questions:
Answers:

I had a somehow similar problem, in my case the dialog would appear and disappear in milliseconds: To solve it, don’t call finish() or finishActivity() in the same method that calls your dialog.

createNewDialog(SOME_CONSTANT).show();
finish();

this destroys your dialog even before you access it.

Questions:
Answers:

The reason it is not showing is that .show() was not called on the AlertDialog

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bAdd:
            AlertDialog dialog = builder.create();
            dialog.show();
            break;
        }

    }