Alert Dialog from inside onOptionsItemSelected Android

I am trying to open a warning dialog when I click one of my OptionsMenuItems options. Continue to work if the user clicks "Yes", cancels if there are no clicks. I just don't know how to make the code. This is what I have:

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.exit: this.finish(); return true; case R.id.about: Intent i = new Intent(this, AboutActivity.class); this.startActivity(i); case R.id.skip: AlertDialog.Builder alertbox = new AlertDialog.Builder(this); // set the message to display alertbox.setMessage("The yoga pose will be skipped from now on!").show(); alertbox.setCancelable(true); alertbox.setNegativeButton("no").setPositiveButton("OK", new DialogClicklistener() { // click listener on the alert box public boolean onClick(DialogInterface arg0, int arg1) { // the button was clicked boolean success = myDbHelper.setSkip(PoseID); SetImageView2(myDbHelper); return success; } }); // add a neutral button to the alert box and assign a click listener alertbox.setCancelable(true).set(onCancelListener) { // click listener on the alert box public boolean onClick(DialogInterface arg0, int arg1) { // the button was clicked } }); // show it alertbox.show(); default: return super.onOptionsItemSelected(item); } } 
+4
source share
2 answers

The following is directly from the application I'm currently working on. It calls AlertDialog, which then leads the user to another action (after entering the password). Please let me know if I can clarify anything about this.

Edit: The entire method is now included.

 @Override public boolean onOptionsItemSelected(MenuItem item) { LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); final int menuItem = item.getItemId(); if ((menuItem == R.id.survey) || (menuItem == R.id.syncMode)) { View layout = inflater.inflate(R.layout.survey_password_dialog, (ViewGroup) findViewById(R.id.layout_root)); final EditText password = (EditText) layout.findViewById(R.id.passwordText); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(layout) .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); final AlertDialog alertDialog = builder.create(); alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { Button b = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (password.getText().toString().equalsIgnoreCase("the_password")) { if (menuItem == R.id.survey) { Intent intent = new Intent(AsthmaAppActivity.this, SurveyActivity.class); startActivity(intent); alertDialog.dismiss(); } else { //(menuItem == R.id.syncMode) startActivity(new Intent(AsthmaAppActivity.this, SyncMode.class)); alertDialog.dismiss(); } } else Toast.makeText(AsthmaAppActivity.this, "Password incorrect", Toast.LENGTH_LONG).show(); } }); } }); alertDialog.getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); alertDialog.show(); } else { //dialog for setting application parameters "on the fly" for application testing View layout = inflater.inflate(R.layout.parameter_change, (ViewGroup) findViewById(R.id.layout_root)); final EditText parameter = (EditText) layout.findViewById(R.id.parameterText); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(layout) .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { String parameterString = parameter.getText().toString(); if(parameterString == null || parameterString.isEmpty()) { testParam = 0.0; } else { testParam = Double.parseDouble(parameterString); } } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }) .show(); } return(super.onOptionsItemSelected(item)); } 
+6
source
 import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; alertbox.setPositiveButton("Yes" new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { log("i'm clicked"); } }); 
0
source

Source: https://habr.com/ru/post/1443033/


All Articles