我创建了基本活动,其中操作栏菜单功能正常,并从中扩展了其他活动。
public class BaseActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
return true;
}
}
现在我想在某些活动中向操作栏添加一些按钮。如何向操作栏添加元素并使用基本活动中的元素?
答案 0 :(得分:6)
您可以像在BaseActivity中一样简单,只是不要忘记致电super.onCreateOptionsMenu()
。
<强> main.xml中强>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:title="@string/action_help" />
</menu>
<强> home.xml 强>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_new"
android:icon="@drawable/ic_action_new"
android:title="@string/action_new" />
</menu>
在BaseActivity中,您使用的是基本菜单配置main.xml
。
public class BaseActivity extends SherlockFragmentActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
在儿童活动中,您使用home.xml
的其他配置仅使用其他菜单项无重复项。但是不要忘记使用相同的super.onCreateOptionsMenu(menu)
实例调用menu
来添加来自BaseActivity
的元素(如果您在子菜单项后添加,则会添加父菜单项膨胀后调用super
的方法,否则调用 。
public class HomeActivity extends BaseActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.home, menu);
return super.onCreateOptionsMenu(menu);
}
}
答案 1 :(得分:0)
您可以在main.xml
中指定操作栏的操作示例:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"/>
<item android:id="@+id/action_compose"
android:icon="@drawable/ic_action_compose"
android:title="@string/action_compose" />
从您的子类调用
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
答案 2 :(得分:0)
制作不同的xml文件,其中包含特定于这些活动所需的按钮。对于Activity1,你有两个按钮,对于Activity2你有一个,那么你将创建2个xml文件,如下所示。
<强> action_activity1.xml 强>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"/>
<item android:id="@+id/action_compose"
android:icon="@drawable/ic_action_compose"
android:title="@string/action_compose" />
</menu>
<强> action_activity2.xml 强>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"/>
</menu>
然后在onCreateOptionsMenu(菜单菜单)方法中膨胀所需的xml文件。像,
<强>活性1:强>
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.action_activity1, menu);
return true;
}
<强>活性2:强>
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.action_activity2, menu);
return true;
}
请注意语法(因为我使用了appcompat操作栏)。 :)
这就是我使用的。希望你觉得它有用。而且,我很高兴看到比这更简单的方法。 :)