2010-01-22 112 views
1

我是Android新手,我試圖從MenuItem開始選擇一個活動的用戶。Android:從MenuItem開始活動

其實,我建立我的菜單(並且工作正常)使用MenuInflater從我的主要活動類:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     super.onCreateOptionsMenu(menu); 
     //the Menu Inflater class allows to create a menu from a XML File 
     MenuInflater inflater = new MenuInflater(this); 
     inflater.inflate(R.layout.menutest,menu); 
     return true; 
    } 

和IM使用下面的代碼(也沒關係工作)處理菜單選擇:

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
     case R.id.MenuItemNewWebsite: 
      ShowScreenAddSite(); 
     break; 

     default:  
     break; 
    } 
    return false; 
} 

我有一個名爲AddWebsite第二和最後一項活動,我想啓動它,但下面的代碼不工作:

protected void ShowScreenAddSite() 
{ 
    Intent i = new Intent(AddWebsite.class); 
    startActivity(i); 

} 

你知道什麼是我必須傳遞給Intent構造函數的額外的東西嗎?

回答

7

的解決方案是太簡單了,看來,在Android中,每一個活動類不會自動引用manifest.xml。

我只是將新的活動添加到清單,並且工作正常。

問候。 何塞

+0

既然這解決了你的問題,你可以接受你自己的答案。 – 2010-01-22 11:42:33

1

我對android自己還很陌生,但是你不需要傳遞一個上下文給Intent構造函數嗎?

protected void ShowScreenAddSite() 
{ 
    Intent i = new Intent(this, AddWebsite.class); 
    startActivity(i); 

} 

你可能會做這從一個活動裏面,所以我覺得你應該用「這個」

+0

嗨馬特, 感謝您的答覆。 我嘗試了這個選項,但我得到一個錯誤,說應用程序已經完成了。 我Addwebsite活動的代碼如下(也許有什麼不妥...): 公共類AddWebsite擴展活動 { \t @覆蓋 \t公共無效的onCreate(捆綁savedInstanceState) \t { \t超.onCreate(savedInstanceState); \t setContentView(R.layout.screenaddsite); \t} } 您是否在代碼中看到其他奇怪的東西? 謝謝。 最好的問候。 何塞。 – Sosi 2010-01-22 10:24:02

1

你也可以做這樣的事情

/* (non-Javadoc) 
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) 
*/ 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    final MenuInflater inflater = new MenuInflater(this); 
    final Intent[] menuIntents = new Intent[] { 
       new Intent(this, AddWebsite.class) }; 
    inflater.inflate(R.menu.mymenu, menu); 
    final int ms = menu.size(); 
    for (int i=0; i < ms; i++) { 
     menu.getItem(i).setIntent(menuIntents[i]); 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

避免一些方法調用,但是你需要注意的菜單標識,菜單順序和意圖之間的映射,但這幾乎總是已知的。