7

私はメニューインフレータを学習していましたが、次のチュートリアルでは、この関数でfalseを返す必要があると述べています。しかし、trueに戻ったとき、変化や違いに気づきませんでした。したがって、問題は次のとおりです。

  • 何を返す必要があり、その理由は何ですか?

ありがとう

4

2 に答える 2

15

通常の処理を実行する場合は、falseを返します。それ以外の場合は、trueを返します。

ドキュメントを参照してください。

デフォルトでは、falseを返すと、Androidはアイテムに関連付けられたRunnableを呼び出すかsetIntent(...)、MenuItemで使用して設定できるインテントを実行します。これを望まない場合は、trueを返す必要があります。

次のようにMenuItemを作成するとします。

MenuItem menu1 = new MenuItem(this);
menu1.setIntent(myIntent);

myIntentメニュー項目がクリックされているときに実行したいことは次のとおりです。例:メニュー項目がGMailアプリを起動して、アクティビティのテキストビューにテキストを含むメールを送信するとします。

コールバックでは、onOptionsItemSelected()テキストビューの値を確認し、テキストビューが空でない場合はfalseを返します(テキストボックスに何かがある場合は、IntentGMailを起動できます)。それ以外の場合は、「メッセージを最初に」と返してtrueを返すため、Androidはインテントを起動しません。

public boolean onOptionsItemSelected (MenuItem item) {
    if (textView.getText().trim().equals("")){
        // show the message dialog
        return true;
    }
    else {
        // we have some message. We can let android know that
        // it is safe to fire the intent.
        return false;
    }
}

これがお役に立てば幸いです...ハッピーコーディング。

于 2012-08-12T10:33:36.560 に答える
5

イベントを処理する場合はtrueを返し、そうでない場合はfalseを返します

于 2012-08-12T10:29:53.800 に答える