2012-06-16 25 views
1

我是一個新的蜜蜂 Android應用程序開發。我正在練習中的代碼你好,Android。現在我碰到菜單,無法進一步移動。我想清楚地介紹我的情況,以便我可以由經驗豐富的安卓應用開發人員指導。我上傳了一張顯示狀態的圖片。 當我按菜單我可以找到一個選項設置。我的Android代碼創建和使用菜單不工作,因爲它應該

但按下設置按鈕時沒有任何反應。我對這個錯誤感到驚訝,並且浪費了很多時間來修復它。但我無法修復它。我想要一些真正的android應用程序開發專家來找到我面對的這個問題的解決方案,並幫助我繼續前進。

enter image description here

這裏是我使用的代碼。

測試/ SRC /組織/阿尼爾/測試/ TestActivity.java

package org.anil.test; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.view.MenuInflater; 
    import android.view.MenuItem; 
    import android.content.Intent; 

    public class TestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    } 

    public boolean onCreateOptionsMenu(Menu menu){ 
    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
    } 
    public boolean onOptionsMenuSelected(MenuItem item){ 
    switch(item.getItemId()){ 
    case R.id.settings: 
     startActivity(new Intent(this, Prefs.class)); 
     return true; 
    } 
    return false; 
    } 
    } 

測試/ RES /佈局/ main.xml中

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

    </LinearLayout> 

測試/ SRC /組織/anil/test/Prefs.java

package org.anil.test; 
    import android.os.Bundle; 
    import android.preference.PreferenceActivity; 

    public class Prefs extends PreferenceActivity { 
    protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.settings); 
    } 

    } 

測試/ RES /菜單/ menu.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/settings" 
     android:title="@string/settings_label" 
     android:alphabeticShortcut="@string/settings_shortcut" /> 
    </menu> 

測試/ RES/XML/settings.xml中

<?xml version="1.0" encoding="UTF-8"?> 
    <PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android" > 

    <CheckBoxPreference 
    android:key="music" 
    android:title="@string/music_title" 
    android:summary="@string/music_summary" 
    android:defaultValue="true" /> 

    <CheckBoxPreference 
    android:key="hints" 
    android:title="@string/hints_title" 
    android:summary="@string/hints_summary" 
    android:defaultValue="true"/> 

    </PreferenceScreen> 

測試/ RES /值/ strings.xml中

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 

    <string name="hello">Hello World, TestActivity!</string> 
    <string name="app_name">Test</string> 
    <string name="settings_label">Settings</string> 
    <string name="settings_title">Sudoku Settings</string> 
    <string name="settings_shortcut">s</string> 
    <string name="music_title">Music</string> 
    <string name="music_summary">play background music</string> 
    <string name="hints_title">Hints</string> 
    <string name="hints_summary">Show hints during play</string> 

    </resources> 

test/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.anil.test" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 

    <application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".TestActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Prefs" android:label="@string/settings_title"> 
    </activity> 

    </application> 

    </manifest> 
+1

你忘了添加menu.xml :)並且你能夠在logcat中看到任何東西? –

+1

@Hmm:Prefs類已經發布。 –

+0

@ Adil Soomro - – Anil

回答

1

回調菜單選擇方法的名稱是onOptionsItemSelected()而不是onOptionsMenuSelected(),試試這個方法:

@Override 
public boolean onOptionsItemSelected (MenuItem item) 
{ 
    //Your code implementation 
} 
+0

非常感謝你節省我的時間,良好的故障排除。保持它的朋友 – Anil

+0

使您的Android項目使用1.6編譯器設置並使用@Override註釋。那麼你將來會遇到編譯錯誤。最好始終使用代碼完成來覆蓋超級方法(因爲名稱將是正確的)。 – Bananeweizen

0

您的Prefs活動是否在您的清單中?

我可能是錯的,但我會給一個鏡頭: 在行

startActivity(new Intent(this, Prefs.class)); 

我覺得「這個」並不代表你的活動。嘗試創建一個靜態變量

static Activity thisActivity; 

和OnCreate中

thisActivity = this; 

然後

startActivity(new Intent(thisActivity, Prefs.class)); 
+0

「這個」應該是有效的...以啓動一個新的活動 – Hmm

+0

啊,無論如何,我的(幾乎)總是使用靜態變量,而不是「this」,您的清單 – mihail

+0

添加您的活動。 – mihail

相關問題