1

アプリケーションにこのコードがあります

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {


        Intent a = new Intent(this,a_stages.class);
        a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(a);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}       

ここで、たとえば別のページに移動するかどうかをユーザーに尋ねるアラート ダイアログを追加したいと思います。ユーザーが [はい] をクリックすると、特定のページが表示され、ユーザーがキャンセルをクリックすると、ダイアログ。キャンセル();。

編集 このコードを試しましたが、「Intent a = new Intent(this,a_stages.class);」という行でエラーが発生しました。「コンストラクター Intent(new DialogInterface.OnClickListener(){}, Class) は未定義です」

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(bq1.this);

        // Setting Dialog Title
        alertDialog.setTitle("Go back to home");

        // Setting Dialog Message
        alertDialog.setMessage("Are you sure you want to go back to home?");



        // Setting Positive "Yes" Button
        alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {

                 Intent a = new Intent(this,a_stages.class);
                a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(a);
            }
        });

        // Setting Negative "NO" Button
        alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            // Write your code here to invoke NO event

            dialog.cancel();
            }
        });

        // Showing Alert Message
        alertDialog.show();


    }
    return super.onKeyDown(keyCode, event);
}       
4

2 に答える 2

1

Intent a = new Intent(this,a_stages.class);thisは匿名のクリックリスナーを指します。含まれているクラスを明示的に参照する必要があります。

Intent a = new Intent(MyActivity.this,a_stages.class); 

MyActivityこのコードが含まれるアクティビティの名前はどこにありますか。

于 2013-01-22T17:35:46.727 に答える
1

とても近い!return false戻るキーが押されたときなどに使用する必要がありreturn super.onKeyDown()ます。このような:

if (keyCode == KeyEvent.KEYCODE_BACK) {
    // Dialog code
    return false;
}
return super.onKeyDown(keyCode, event);

onBackPressed()(また、back キーだけを聞くことに関心がある場合は、代わりにオーバーライドすることもできます。)

于 2013-01-22T17:31:47.850 に答える