我是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();
}
}
您可能还需要更改布局文件,但您尚未为此发布代码,因此我无法进一步提供帮助。
我认为您必须在类中输入应用程序类的名称。目的需要要启动的类的名称作为第二个参数。
但不清楚你在问什么。