2

私のアプリケーションでは、アクティビティの開始時にダイアログボックスを開こうとしていますが、ポジティブボタンがあります。そのボタンをクリックすると、新しいアクティビティが開きます。次のコードで正常に動作します。しかし、メニューボタンまたは検索ボタンのダイアログボックスを長押しすると、消えてしまいます。メニューまたは検索ボタンを押しても、このダイアログボックスを一定に保つにはどうすればよいですか。ありがとう。

public class Sam3Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    TextView title = new TextView(this);
    title.setText("DM2");
    title.setBackgroundColor(Color.DKGRAY);
    title.setPadding(10, 10, 10, 10);
    title.setGravity(Gravity.CENTER);
    title.setTextColor(Color.WHITE);
    title.setTextSize(20);
    /* alert message */
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCustomTitle(title);

    builder.setMessage("dialog with message").setCancelable(false).setPositiveButton(
            "Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                    Log.d("choose","on dissmiss");
                startActivity(new Intent(getApplicationContext(),
                                                              StatisticDisplay.class));//second activity
                }
            });
    AlertDialog alert = builder.create();

    alert.show();
     }
}
4

1 に答える 1

4

onKeyListenerにを付けて押されたキーの世話をDialogします。私の例では、検索キーの世話をしているだけですが、要点を理解する必要があります。このようなリスナーを使用したことがない場合、戻るtrueとはイベントが伝播しないsearchことを意味し、ダイアログの表示中にシステムが押されたときにキーをキャッチしないように注意します。

それ以外の場合(キーがではない場合KEYCODE_SEARCH)、このリスナーは存在しないかのように渡されます。:)

... 
builder.setOnKeyListener(new OnKeyListener(){
            @Override
            public boolean onKey(DialogInterface dialog, 
                                 int keyCode,
                                 KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_SEARCH ) return true;
                return false;
            }
        });
...

関連ドキュメント:

于 2012-05-15T08:03:32.390 に答える