1

これが私の質問です。基本的なものだと確信しています。プログラミングしてから2年以上経ちますので、しばらくお待ちください。

MainActivityクラスにアクション バーを作成しました。私のonOptionsItemsSelected(メイン メニュー) メソッドには、使用可能なアクション アイテムからのユーザー入力に基づいて開始するアクティビティを MainActivity に指示する switch ステートメントがあります。Action Barユーザーが選択を選択したときに、すべてのアクティビティで一貫した動作を維持することに興味があります。onOptionsItemsSelectedメニュー項目は同じままです。すべてのアクティビティで同じにしたいです。MainActivity からコードをコピーして貼り付けることはできますが、それが「正しい」方法ではないことはわかっています。

例: MainActivity アクション バーでは、オプション A、B、C が提供されます。ユーザーが選択すると、アクティビティ A、B、または C が開始されます。

ユーザーが A を選択すると、A が起動します。ユーザーがアクションバーを使用して B、C またはメイン画面を起動できるようにしたい。

これには基本的な解決策があることは知っていますが、コーディングしてからしばらく経ちました。すべてのヘルプに感謝します。私の質問は単純なので、気を悪くしないでください :)

4

1 に答える 1

0

私は答えを見つけ出し、それは基本的なプログラミングに帰着します。これが十分に明確になるかどうか教えてください。

そのため、Android 形式のプログラミングについて知っておくべきことがいくつかあります。MainActivity() から、開始時に 2 つの関数を順番に呼び出します。

メニュー/アクションバーに配置する値を呼び出す OnCreateOptionsMenu(Item item) 。OnOptionsItemsSelected(Item item) は、アプリケーションに選択の処理方法を指示します。

OnOptionsItemsSelected() を呼び出すときの各アクティビティで、異なるビューのそれぞれでアクション バーの一貫性を保ちたい場合は、選択肢から ID を取得するメソッドがあり、super.OnOptionsItemsSelected(item) を使用してそれを返します。これを機能させるには、Activity ではなく MainActivity を拡張する呼び出しクラスをユーザーに持たせる必要があります。コードの例を次に示します。

これは、MainActivity と同じ動作のアクション バー (同じ選択肢を持つ) を維持したい 2 番目のアクティビティのコードです。注: MainActivity を拡張しないと、MainActivity ではなく Activity クラスからメソッドが呼び出されるため、機能しません。

public class secondActivity extends MainActivity{

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondActivity);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        item.getItemId();
    return super.onOptionsItemSelected(item);   
    }

}
于 2013-01-14T19:28:29.693 に答える