1

それがAlertDialog2 回表示されているのですが、その理由がわかりません。問題はAlertDialogs;だけに当てはまるわけではありません。ただし、同様に適用さ"Activities"れます。

私は Android 4.0.3 で問題に直面していることに注意してください。ただし、Android 2.3.6 でアプリケーションを実行すると、すべて正常に動作します。

sに関する私の問題を解決するためActivitieに、マニフェスト ファイルに : を設定しましたが、 android:launchMode="singleInstance"うまくいきました。

ただし、AlertDialogマニフェストファイルに設定するための参照がないため、これは s に対しては実行できませんsingleInstance

BreakPointの後にコードをチェックするためにa を入れるように言われた人もいますshow()BreakPointしかし、a の付け方とチェックの仕方がわかりません。

編集:

HoloEverywhere と SherlockActionBar を使用しています。それらがどの程度の効果があるかはわかりません。

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
    switch(item.getItemId())
    {
    case R.id.action_one:
        alertDialog();
        break;
    case R.id.action_two:
        Intent i = new Intent(this,Info.class);
        startActivity(i);
        overridePendingTransition(0, 0);    
        break;

    }
    return super.onOptionsItemSelected(item);
}

private void alertDialog(){

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("My title");
        AlertDialog alert= builder.create();
        alert.show();

}

マニフェストファイルcase R.id.action_twoに設定した後、正常に動作しています。launchMode="singleInstance"ただし、case R.id.action_oneどちらを起動しAlertDialogても、まだ 2 回開いています。

@Override
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
        // TODO Auto-generated method stub
        com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.action_options, menu);
        return super.onCreateOptionsMenu(menu);
    }
4

1 に答える 1

1

この行を変更します。

return super.onCreateOptionsMenu(menu);

に:

return true;

を呼び出すと、メニューの各項目にsuper.onCreateOptionsMenu追加のリスナーがアタッチonMenuItemClickListenerされるため、2 回のクリックが記録されます。

(追伸: 私は実際にこれを理解し、投稿するつもりでしたが、電話に出なければなりませんでした。冗談ではありません)

于 2013-04-04T01:40:39.107 に答える