0

OptionsMenus と ActionsBars の Google の Android ページのヘルプ セクションを読んでいました: http://developer.android.com/guide/topics/ui/actionbar.html また、フラグメントを使用する場合、フラグメントが呼び出される前にアクティビティの onOptionsItemSelected メソッドが呼び出されることを示すメモが含まれており、onOptionsItemSelected メソッド定義の最後にデフォルトを含める必要があります。次のメソッドの例が含まれていましたが、これが Activity 定義または Fragment 定義内の例であるかどうかは述べられていませんでした。私はこれについて少し混乱しており、明確化を求めたかった. 「スーパー」の使用に基づいて、アクティビティに渡されるフラグメント内にあることが示唆されますが、これは、アクティビティが最初に呼び出されるという彼らの声明に同意しません。アクティビティの例であり、「スーパー」が親アプリケーション クラスを指す場合、次に、それがフラグメントにどのように参照されるかについては明確ではありません。明確化のメモをいただければ幸いです。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {
        case R.id.action_search:
            openSearch();
            return true;
        case R.id.action_compose:
            composeMessage();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
4

1 に答える 1

0

あなたのメソッドMyActivityは拡張Activityされ、したがって継承されます。そのうちの 1 つはonOptionsItemSelected()、あなたがオーバーライドしていることです。

呼び出しは言う:スーパークラスからsuper.whatever()このメソッドをオーバーライドしたいが、そこで定義されているようにメソッドを実行します。基本的に、そのメソッドに何かを追加しています。たとえば、それはあなたが通常行うことです。whatever()ActivityonCreate

この場合、返さfalseれるということは、ID が前述の 2 つと異なる場合は終了であることを意味します。メニューの管理はここで終了できます。フラグメントにその呼び出しを受信させたいので、明らかにそうではありません。

つまり、あなたのアクティビティはスーパークラス メソッドをオーバーライドして最初の 2 つのメニュー項目を管理し、次にスーパークラス メソッドを呼び出して物事を実行し続け、ここで管理されていないものがあるかもしれないと言います。

于 2015-01-03T20:52:02.507 に答える