操作栏按钮仅适用于一项活动

时间:2014-04-13 20:30:47

标签: java android button action

所以我在Action Bar中有一个搜索按钮,但我只想在第一个Activity中使用该按钮,但是当我打开seconde活动时,Action按钮仍然存在。如何在不删除操作栏的情况下摆脱seconde活动中的那个按钮,因为我需要从导航抽屉中找到它。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
    ...
</menu>

活动1:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

活动2:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //I thought removing the INFLATER part would help, but it didn't...
    return super.onCreateOptionsMenu(menu);
}

3 个答案:

答案 0 :(得分:0)

您可以使第二个活动中的项目不可见:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem item = menu.findItem(R.id.action_search);      
    item.setVisible(false);  
    return super.onCreateOptionsMenu(menu);
}

另一种方法是加载第二个没有项目的menu.xml。

答案 1 :(得分:0)

您可以尝试在第二个活动中隐藏搜索菜单项。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.findItem(R.id.action_search).setVisible(false);
    return true;
}

您可以通过多个答案参考此question

答案 2 :(得分:0)

如果您返回false,则不会显示。作为android docment说http://developer.android.com/reference/android/app/Activity.html#onCreateOptionsMenu%28android.view.Menu%29

@Override
public boolean onCreateOptionsMenu(Menu menu) {
     return false;
}