Android:在一个XML中定义所有应用程序菜单项

时间:2013-10-29 09:16:46

标签: android actionbarsherlock menuitem

我在我的应用程序中使用ActionBarSherlock,我的很多菜单项都可以在很多不同的活动中找到。

现在我必须在每个Activity的activity_menu.xml文件中定义它们,例如

显示在5个不同的xml文件中。 有没有办法在一个xml文件中定义所有应用程序的菜单项,然后为每个活动选择我想要显示的菜单项?

编辑:我读到了创建一个只实现菜单功能然后扩展它的活动,但这对我来说不是一个空闲的解决方案。做我描述的任何方式?

希望我很清楚, 感谢

1 个答案:

答案 0 :(得分:0)

是的,有办法,你不需要在每项活动中申报。您需要拥有一个名为BaseActivity的东西,以便可以从中扩展所有其他活动。代码示例:

BaseActivity.java:

public class BaseActivity extends SherlockFragmentActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(Config.THEME);
        // set up action bar
        actionBar = getSupportActionBar();
        // sets device orientation
        setDeviceType(this);

        actionBar.setDisplayHomeAsUpEnabled(true);

    }

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.aiwmain, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        super.onOptionsItemSelected(item);

        switch (item.getItemId()) {
        case R.id.scanner:
                   //do something on menu click
                case R.id.location:
           //do something on menu click
        break;

        }

        return true;

    }

现在只需通过BaseActivity扩展您的其他类:

public class HowToUseActivity extends BaseActivity {

}