2

シャーロックのアクションバーを使用しています。私はそれを自分のアプリに実装しようとしています。しかし、私はそれを機能させるために何かが欠けているようです。私のコードを確認してください。アクションボタンをタップしても、アプリは何もしません。以下は私のコードと私のxmlです。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.activity_main, menu);


         menu.add("Share")
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

         menu.add("Save")
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

         menu.add("Set")
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        return super.onCreateOptionsMenu(menu);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.share:
        new share(this).execute(image_url);
        return true;
    case R.id.save:
        new save(this).execute(image_url);
        return true;
    case R.id.set:
        new set(this).execute(image_url);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

私のメニューxml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

 <item android:id="@+id/share"
       android:title="@string/share"/>

 <item
        android:id="@+id/save"
        android:title="@string/save"/>

    <item
        android:id="@+id/set"
        android:title="@string/set"/>


</menu>
4

2 に答える 2

9

OnMenuItemClickListener次のようにメニュー項目を設定できます。

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    menu.add("Share")
        .setOnMenuItemClickListener(this.mShareButtonClickListener)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    // Other items...

    return super.onCreateOptionsMenu(menu);
}

次に、OnMenuItemClickListenerを作成します。

OnMenuItemClickListener mShareButtonClickListener = new OnMenuItemClickListener() {

    @Override
    public boolean onMenuItemClick(MenuItem item) {  

         // Example of action following your code
         new share(YouActivity.this).execute(YouActivity.this.image_url);
         return false;
    }
};
于 2012-08-24T03:42:54.327 に答える
1

メニューのxmlからメニューを拡張し、onCreateOptionsMenuも追加します。これは、両方ではなく、どちらかを実行する必要があります。

 menu.add(Menu.NONE, PREF_MENU_ITEM, Menu.NONE, R.string.channel_preferences_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        menu.add(Menu.NONE, FEEDBACK_MENU_ITEM, Menu.NONE, R.string.feedback_from_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        menu.add(Menu.NONE, ABOUT_MENU_ITEM, Menu.NONE, R.string.about_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        // commenting out this line because this func dosent have any use case
        // for APP version 3.0.0
//      menu.add(Menu.NONE, SOCIAL_MENU_ITEM, Menu.NONE, R.string.social_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        menu.add(Menu.NONE, FAQ_MENU_ITEM, Menu.NONE, R.string.faq_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        menu.add(Menu.NONE, DIAGNOSIS_MENU_ITEM, Menu.NONE, R.string.diagnosis_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        menu.add(Menu.NONE, MY_ACCOUNT_MENU_ITEM, Menu.NONE, R.string.account_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
于 2012-08-24T04:18:35.147 に答える