2013-01-06 47 views
0

我是Java和Android開發的新手。我只爲學習目的製作簡單的應用程序。我已經學會了如何使菜單按鈕的功能等,但它是非常奇怪的每一個類文件編寫代碼:Android:外部菜單類

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case 1: 
      try { 
       Class activityClass1 = Class.forName("com.epicandroidapp.MenuActivity"); 
       Intent activityIntent1 = new Intent(MainActivity.this, activityClass1); 
       startActivity(activityIntent1); 
       return true; 
      } catch (ClassNotFoundException e) { 
       e.printStackTrace(); 
      } 
     case 2: 
      return true; 
     case 3: 
      try { 
       Class activityClass2 = Class.forName("com.epicandroidapp.AboutActivity"); 
       Intent activityIntent2 = new Intent(MainActivity.this, activityClass2); 
       startActivity(activityIntent2); 
      } catch (ClassNotFoundException e) { 
       e.printStackTrace(); 
      } 
      return true; 
     case 4: 
      try { 
       Class activityClass3 = Class.forName("com.epicandroidapp.VersionActivity"); 
       Intent activityIntent3 = new Intent(MainActivity.this, activityClass3); 
       startActivity(activityIntent3); 
      } catch (ClassNotFoundException e) { 
       e.printStackTrace(); 
      } 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

我無法找到任何教程或像這樣的東西。那麼有可能使用一些外部文件,這將會像一些構造函數或其他東西?

感謝對答案 馬克西米利安·庫利科夫

回答

0

你可以使用這個更小的代碼在switch語句每種情況:

startActivity(new Intent(MainActivity.this, com.epicandroidapp.MenuActivity.class)); 

,或者如果您導入類:

import com.epicandroidapp.MenuActivity; 

startActivity(new Intent(MainActivity.this, MenuActivity.class)); 

編輯:如果你的意思是整個代碼,那麼你需要使用XML資源,正如討論的那樣的教程:http://developer.android.com/guide/topics/ui/menus.html

例如,您創建一個包含菜單(保存它RES /菜單/ filename.xml中)的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/item1" 
      android:icon="@drawable/item1" 
      android:title="@string/item1"/> 
</menu> 

,然後在onCreateOptionsMenu你做:

onOptionsItemSelected方法
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.filename, menu); 
    return true; 
} 

,您使用getItemId獲得選擇的菜單項的ID,如:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.item1: 
      startActivity(new Intent(MainActivity.this, MenuActivity.class)); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

請注意,所有這些示例代碼都來自android教程有關菜單。

+0

Bojan Kogoj:是的,這就是我的意思。 – McSim

+0

我的答案的第二部分應該回答你的問題。 –

+0

是否有可能在xml中編寫第三個代碼?如: android:onClick =「@ android: - 活動開關命令 - =」activity_main「」 所以我可以重寫所有活動的按鈕功能? – McSim