Названия пунктов меню Android - PullRequest
0 голосов
/ 18 января 2012

Хорошо, я относительно новичок в 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();
        }
    }
} 

В настоящее время я использую этот метод, но проблема у меня заключается в том, что имя, отображаемое в меню, должно совпадать с именем класса, чтобы оно работало.Если бы я хотел вызвать действие с именем «Тест», то отображаемое имя должно быть «Тест».Я уверен, что смог бы понять это, если бы у меня было больше времени, но я просто не знаю.Любая помощь приветствуется.Спасибо.

1 Ответ

1 голос
/ 18 января 2012

Почему бы вам не попробовать простой способ вроде:

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;
  }
...