2

私は Android の初心者で、オプション メニューが必要なアプリに取り組んでいます。現在、オプション メニューをプライマリ アクティビティとして設定し、メイン アクティビティで拡張することで、オプション メニューを実装しています。

しかし、私はチームで仕事をしているので、この方法が常にうまくいくとは限りません。不可欠な別のアクティビティを拡張する必要があるからです。

私の質問 メインアクティビティのアクティビティを拡張せずに、アプリケーション全体にこのオプションメニューを実装するにはどうすればよいですか?

現在のセットアップ

  1. MainActivity があります (これが最初に開始されます) - MainActivity は MenuClass を拡張します
  2. OptionsMenu クラス、MenuClass があります (これをアプリケーション全体にしたい) - MenuClass extends Activity
  3. アクティビティ自体を拡張する他の 3 つのクラスがあります。そして、これら 3 つのアクティビティは MainActivity からトリガーされ、完了すると MainActivity に戻ります。
4

1 に答える 1

2

他のすべてのアクティビティが拡張する基本アクティビティを作成したくない、または作成できない場合は、public static void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {...}関数とpublic static boolean onOptionsItemSelected(MenuItem item) {...}?

public class Utils {
    public static void onCreateOptionsMenu(Menu menu, MenuInflater inflater ){
        //... create default options here
    }

    public static boolean onOptionsItemSelected(MenuItem item) {
        //... see if you want to handle the selected option here, return true if handled
    }
  }

次に、アクティビティからこれを行うことができます:

public class YourActivity extends Activity {

// ...


public void onCreateOptionsMenu(Menu menu, MenuInflater inflater ){
   Utils.onOptionsItemSelected(menu, inflater);
   //... add other options here
}


public boolean onOptionsItemSelected(MenuItem item) {
    boolean handled = Utils.onOptionsItemSelected(item);
    if (!handled) {
        switch(item.getItemId()) {
            case R.id.menu_sign_out:
                //... deal with option
            break;
            //.. deal with other options
        }
    }
    return handled;
}

アプリへの組み込み方法に応じて、これの正確な実装を変更したい場合があります。つまり、いくつかの状態を維持する必要があるため、utils メソッドを静的にしたくない場合がありますが、これは機能するはずです。

于 2011-11-14T16:16:47.933 に答える