0

MainActivity があり、ここに部分的なコードを投稿しています。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.action_quit:
        moveTaskToBack(true);
        return true;
    case R.id.action_help:
        //display the help activity
        Intent myIntent = new Intent( this, ShowHelp.class);
        startActivityForResult(myIntent, 0);
        return true;
    case R.id.action_about:
        //display the about window
        //aboutApp();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
public void aboutApp() {
    // custom dialog
    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.about);
    dialog.setTitle("About TollCulator");

    TextView textViewAbout = (TextView) dialog.findViewById(R.id.tvContents);

    textViewAbout.setText("About: ");
    textViewAbout.append("\n\tTollCulator - Toll Calculator");
    textViewAbout.setMovementMethod(new ScrollingMovementMethod());
    Button btnCloseIt = (Button) dialog.findViewById(R.id.btnOk);
    // if button is clicked, close the custom dialog
    btnCloseIt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
    ImageView iv1 = (ImageView) dialog.findViewById(R.id.imgFB);
    iv1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Uri uri = Uri.parse("https://www.facebook.com/PagesByZ");); 
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            dialog.cancel();
            startActivity(intent);
        }
    });
    dialog.show();
}

それ自体がアクティビティである ShowHelp.class 部分コードをここに示します。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
        case 16908332:
            Intent myIntent = new Intent(getApplicationContext(), MainActivity.class);
            startActivityForResult(myIntent, 0);
            //finish();
    }
    return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
    // do something on back.
    Intent myIntent = new Intent(getApplicationContext(), MainActivity.class);
    startActivityForResult(myIntent, 0);
    //finish();
    return;
}

メニューから選択action_helpすると ShowClass アクティビティが開き、戻るボタンを押すと問題なく MainActivity に戻ります。

ここで、[バージョン情報] ダイアログを選択action_aboutするとポップアップが表示され、ダイアログ内のアイコンをクリックすると、次のポップアップが表示されます。 ここに画像の説明を入力

この時点で、ポップを閉じて [About] ダイアログを表示するのではなく、[戻る] を押すと、ホーム画面に移動します。

ShowClassのfinish();メソッドにコメントを付けると、[Complete action using] から [戻る] ボタンをクリックできますが、MainActivity に移動する代わりに、そこから ShowClass に移動し、[戻る] ボタンをもう一度押して MainActivity に戻ることができます。そのため、最初に選択している限り、action_help[戻る] を押すと ShowHelp に戻ります。

[About] ダイアログから [Complete] アクションがポップアップ表示されたら、ログを設定しました。これは onPause() 状態で、最初に ShowHelp を実行しなかった場合、アプリは直接 onStop() と onDestroy() に移動します。

問題を解決するのを手伝ってください。

それをテストするために、ShowHelp クラスを使用せずにダイアログのみを含むデモを作成しました。[戻る] ボタンを押すと、[ダイアログを使用して完了] アクションが閉じ、もう一度 [戻る] を押すと [バージョン情報] ダイアログが閉じます。だから私は何が起こっているのか分かりません。

4

1 に答える 1