-1

モバイル自体の戻るボタンを使用して、本当に終了するかどうかを確認するダイアログ ボックスを表示させたいですか?

 public void onBackPressed() {
    // TODO Auto-generated method stub

    AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
    dialog.setTitle("Confirm");
    dialog.setMessage("Are you sure you want to exit?");
    return;
 }



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

    EditText text=(EditText)findViewById(R.id.Text);
    TextWatcher watch=new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            onBackPressed();
        }
    };
    text.addTextChangedListener(watch);
}
4

4 に答える 4

2

私が考えたように、あなたonBackPressed()はAndroidのバックキーを処理するためのオーバーライドメソッドです。

に追加dialog.create().show()するだけonBackPressed();です。

AlertDialogが表示されます ..

また、elseonBackPressed();から削除すると、ユーザーが..afterTextChanged(Editable s)に文字を入力しようとすると毎回呼び出されます。EditText

アップデート:

あなたonBackPressed()がすべきもう1つのこと、

@Override
public void onBackPressed()
{
 super.onBackPressed();

 AlertDialog.Builder dialog = new AlertDialog.Builder(TestActivity.this);
 dialog.setTitle("Confirm");
 dialog.setMessage("Are you sure you want to exit?");
 dialog.create().show();
}

そうでない場合は変更します。

于 2012-08-27T13:25:11.087 に答える
0

このコードを戻るボタンイベントに使用します

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK) {
     onBackPressed();
     return true;
   }
 return super.onKeyDown(keyCode, event);
}

これは警告ダイアログです

private void onBackPressed() {

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    alertDialogBuilder.setTitle("Do you really want to exit?");
    alertDialogBuilder
            .setMessage("Click yes to exit!")
            .setCancelable(false)
            .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, close
                    // current activity
                    ThisActivity.this.finish();
                }
              })
            .setNegativeButton("No",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, just close
                    // the dialog box and do nothing
                    dialog.cancel();
                }
            });             
            AlertDialog alertDialog = alertDialogBuilder.create(); 
            alertDialog.show();
}
于 2012-08-27T13:25:19.523 に答える
0

これを試して。

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) 
    {
        showDialogForCloseApplication();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

private void showDialogForCloseApplication()
    {
        try
        {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(getResources().getString(R.string.name));
            builder.setMessage("Are you sure you want to exit?")
               .setCancelable(false)
               .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
               {
                   public void onClick(DialogInterface dialog, int id) 
                   {
                       finish();
                   }
               })
               .setNegativeButton("No", new DialogInterface.OnClickListener() 
               {
                   public void onClick(DialogInterface dialog, int id) 
                   {
                        dialog.cancel();
                   }
               });
            AlertDialog alert = builder.create();
            alert.show();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
于 2012-08-27T13:25:21.023 に答える
0

*最初の方法:onKeyDown *現在のアクティビティで@Override メソッドを試してください:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if (keyCode == event.KEYCODE_BACK) {
        showAlert("", "Do you really want to exit?");
    }
    return super.onKeyDown(keyCode, event);
}

private void showAlert(final String title, final String msg) {
    AlertDialog.Builder dialouge = new AlertDialog.Builder(CategoriesList.this);
    dialouge.setMessage(msg);
    dialouge.setPositiveButton(" Yes ", new DialogInterface.OnClickListener() {
        public void onClick( DialogInterface arg0, int arg1) {
            CurrentActivity.this.finish();
        }
    });
    dialouge.setNegativeButton(" No ", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface arg0, int arg1) {
        }
    });
    dialouge.show();
}

2 番目の方法: @Override による onBackPresed()

public void onBackPresed(){

   Log.d(TAG,"inside onBackPressed()");
       showAlert("", "Do you really want to exit?");
}
于 2012-08-27T13:26:31.350 に答える