0

我是 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);
}

我找不到任何教程或类似的东西。那么是否有可能使用一些外部文件,就像一些构造函数或其他东西?

感谢您的回答马克西米利安库利科夫

4

1 回答 1

0

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

startActivity(new Intent(MainActivity.this, com.epicandroidapp.MenuActivity.class));

或者如果您导入该类:

import com.epicandroidapp.MenuActivity;

startActivity(new Intent(MainActivity.this, MenuActivity.class));

编辑:如果您的意思是整个代码,那么您需要使用 XML 资源,如本教程中所述:http: //developer.android.com/guide/topics/ui/menus.html

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

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/item1"
          android:icon="@drawable/item1"
          android:title="@string/item1"/>
</menu>

然后在你的onCreateOptionsMenu你做:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.filename, menu);
    return true;
}

在您的onOptionsItemSelected方法中,您用于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 教程。

于 2013-01-06T15:44:36.920 回答