0

好的,所以我对 Android 比较陌生,而且我在菜单项名称方面遇到了一些问题。我会尽力解释这一点。

public class Menu extends ListActivity{
    //Should be named the same as the Class itself 
    String classes[] = { "example1", "example2", "example3", "example4", "example5"};

    @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  

        String classPosition = classes[position];

        super.onListItemClick(l, v, position, id);
        try{
        Class testClass = Class.forName("com.Test." + classPosition);
        Intent testIntent = new Intent(Menu.this, testClass);
        startActivity(testIntent);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
    }
} 

我目前正在使用这种方法,但我遇到的问题是菜单上显示的名称必须与类名相同才能正常工作。如果我想调用一个名为“Test”的活动,那么显示的名称必须是“Test”。我敢肯定,如果我有更多的时间,我可以解决这个问题,但我就是没有。任何帮助表示赞赏。谢谢。

4

1 回答 1

1

你为什么不尝试类似的simplay方式:

private static final int MenuA = 1;
private static final int MenuB = 2;

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    { 
        menu.add(0,MenuA ,1,"Menu A"); 
        menu.add(0,MenuB ,1,"Menu B"); 
        return true; 
   }


   public boolean onOptionsItemSelected (MenuItem item)
   { 
    switch(item.getItemId())
    {
    case(MenuA):
    //your code
            break;
    case(MenuB):
    //your code
            break;
    }
    return false;
  }
于 2012-01-18T04:25:50.040 回答