Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:外部菜单类_Android_Class_External - Fatal编程技术网

Android:外部菜单类

Android:外部菜单类,android,class,external,Android,Class,External,我是Java和Android开发的新手。我只是为了学习而制作简单的应用程序。我已经学会了如何制作菜单按钮函数等,但在每个类文件中编写以下代码是非常奇怪的: public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: try { Class activityClass1 = Class.forName

我是Java和Android开发的新手。我只是为了学习而制作简单的应用程序。我已经学会了如何制作菜单按钮函数等,但在每个类文件中编写以下代码是非常奇怪的:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case 1:
            try {
                Class activityClass1 = Class.forName("com.epicandroidapp.MenuActivity");
                Intent activityIntent1 = new Intent(MainActivity.this, activityClass1);
                startActivity(activityIntent1);
                return true;
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        case 2:
            return true;
        case 3:
            try {
                Class activityClass2 = Class.forName("com.epicandroidapp.AboutActivity");
                Intent activityIntent2 = new Intent(MainActivity.this, activityClass2);
                startActivity(activityIntent2);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return true;
        case 4:
            try {
                Class activityClass3 = Class.forName("com.epicandroidapp.VersionActivity");
                Intent activityIntent3 = new Intent(MainActivity.this, activityClass3);
                startActivity(activityIntent3);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return true;
    }
    return super.onOptionsItemSelected(item);
}
我找不到任何教程或类似的东西。那么,有没有可能使用一些外部文件,比如一些构造函数之类的东西

谢谢你的回答
Maximilian Kulikov

您可以在switch语句中对每种情况使用更小的代码:

startActivity(new Intent(MainActivity.this, com.epicandroidapp.MenuActivity.class));
或者,如果导入该类:

import com.epicandroidapp.MenuActivity;

startActivity(new Intent(MainActivity.this, MenuActivity.class));
编辑:如果您指的是整个代码,则需要使用XML资源,如本教程中所述:

例如,创建一个包含菜单的xml文件(保存在res/menu/filename.xml中):

onOptions ItemSelected
方法中,使用
getItemId
获取所选菜单项的id,例如:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.item1:
            startActivity(new Intent(MainActivity.this, MenuActivity.class));
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

请注意,所有这些示例代码都来自android菜单教程。

Bojan Kogoj:是的,这就是我的意思。我回答的第二部分应该回答您的问题。是否可以用xml编写第三个代码?类似于:android:onClick=“@android:--command for activity switch-->activity_main”,这样我就可以重写所有活动的按钮功能了?如果您的目标是android 3.0及以上版本,那么有一个
onClick
属性在您的活动中采用公共方法。如果您希望多个活动具有相同的代码,那么可以创建一个静态类,其中包含大量执行相同操作的公共静态方法。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.filename, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.item1:
            startActivity(new Intent(MainActivity.this, MenuActivity.class));
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}