1

Android テキスト メニューとして使用している XML があります。

ここにXMLがあります

   <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
    android:title="@string/menu_settings"
    android:orderInCategory="100"
    android:showAsAction="never" />
<item android:id="@+id/menu_search" android:title="@string/menu_search"></item>
<item android:id="@+id/exit" android:title="@string/menu_exit" android:orderInCategory="200" ></item>

 </menu>

次のコードを使用してメニューを膨らませます

   public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

クリックされたメニュー項目を確認するときは、これを使用します。

  public boolean onOptionsItemSelected(MenuItem item) {
        int itemid = item.getItemId();
        Toast.makeText(this, "You pressed the icon!" + itemid, itemid).show();
        return true;
    }

これにより、押された各メニュー項目の数値 ID が得られます。ケースステートメントを使用してこれを確認してから、開きたいページを起動する必要がありますか? または、インテントをメニュー項目にリンクする方法はありますか? このコードを各画面に追加するのは少しもったいないようです。

4

2 に答える 2

0

呼び出しにはケースステートメントを使用する必要があります:-

public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
        case R.id.menu_settings:

             return true;
              case R.id.menu_setting2:

             return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
于 2012-09-16T13:02:56.987 に答える
0

別のアクティビティで同じメニューを使用するには、MenuActivity クラスで Activity クラスを拡張するだけで、他のクラスでは Activity の代わりに MenuActivity クラスを拡張するだけで済みます。これにより、同じコードを何度も記述する必要がなくなります。

public class MenuActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                setContentView(R.layout.menulayout);

    }

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menuxml, menu); 
        return true;
    }

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

               // pass menu item in cases
        case R.id.menu1:

                Intent intent1 = new Intent(this,
                        Activity1.class);
                startActivity(intent1 );

            break;

                              case R.id.menu2:

                Intent intent2 = new Intent(this,
                        Activity2.class);
                startActivity(intent2 );

            break;

        return true;
    }
}

//MenuActivity を拡張する別の Activity を次に示します。

public class Activity1 extends MenuActivity{
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
}

}

于 2012-09-16T13:27:01.077 に答える