如何在 Java 中将字符串数组定义为活动标题



我是Java新手。我正在创建安卓应用程序。我根据教程创建了列表菜单。菜单名称来自类名(MainActivity),但是我想为每个活动添加标题,并在列表中显示该文本而不是活动名称。请参阅我的代码。没有布局。谢谢

软件包 com.x.xname;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Menu extends ListActivity {
    String classes [] = {"MainActivity", "example1", "example2",
            "example3", "example4", "example5", "example6"}; // add class name(MainActivity) to active second menu

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes));
    }
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        String tikla = classes [position];
        try{
        Class ourClass = Class.forName("com.x.xname." + tikla);
        Intent ourIntent = new Intent(Menu.this, ourClass);
        startActivity(ourIntent);
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }
}

道歉..Java不是我的母语。

通过查看您发布的代码,onListItemClick将从数组中获取相应的字符串,并尝试找到一个名为该字符串的类,然后假定该字符串是一个Activity

而不是字符串数组,而是有一个名为"MenuOption"的新类数组,其中包含一个用于标题的属性和另一个用于类名的属性。

class MenuOption {
    public String title;
    public String className;
    public MenuOption(String title, String className)
    {
        this.title = title;
        this.className = className;
    }
}

你的代码看起来像这样。

MenuOption classes [] = { new MenuOption("My Main Activity Title", "MainActivity"), new MenuOption("Another Activity Title", "AnotherActivity")

然后将单击处理程序更改为类似以下内容...

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    MenuItem tikla = classes [position];
    try{
    Class ourClass = Class.forName("com.x.xname." + tikla.className);
    Intent ourIntent = new Intent(Menu.this, ourClass);
    startActivity(ourIntent);
    } catch (ClassNotFoundException e){
        e.printStackTrace();
    }
}

您可能还需要更改布局文件,但您尚未为此发布代码,因此我无法进一步提供帮助。

我认为您必须在类中输入应用程序类的名称。目的需要要启动的类的名称作为第二个参数。

但不清楚你在问什么。