2013-09-22 91 views
0

當我運行我的應用程序時,沒有菜單按鈕可用於設置活動。 我有一個使用共享首選項的設置活動。我打電話的主要活動是這樣的:無法訪問設置活動(SharedPreferences)

private SharedPreferences settings; 
private OnSharedPreferenceChangeListener listener; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    settings = PreferenceManager.getDefaultSharedPreferences(this); 

    listener = new OnSharedPreferenceChangeListener() { 

     @Override 
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
       String key) { 

     } 
    }; 
    settings.registerOnSharedPreferenceChangeListener(listener); 

這是我設置的活動:

public class SettingsActivity extends PreferenceActivity { 

@SuppressWarnings("deprecation") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.settings); 
} 
} 

而且我的settings.xml是在XML文件夾及其此刻很簡單。我只想在我的應用程序中打開設置。 XML是這樣的:

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

<PreferenceCategory android:title="General settings" > 
    <EditTextPreference 
     android:key="pref_username" 
     android:title="User name" /> 

    <CheckBoxPreference 
     android:key="pref_viewimages" 
     android:summary="Determines whether lists are shown with thumbnail photo" 
     android:title="View images"/> 
</PreferenceCategory> 

我還添加設置活動清單文件:

<activity 
     android:name=".SettingsActivity"></activity> 

到目前爲止,它沒有按日食」不要給我任何錯誤。但是當我運行我的應用程序時,沒有菜單可以進入設置頁面!我的印象是,當我創建一個設置活動時,Android會自動創建一個設置菜單。但沒有菜單按鈕或任何東西。我怎樣才能解決這個問題?

回答

1

菜單和sharedpreferences沒有直接關聯。共享首選項將值存儲在存儲中。菜單將是圖形佈局,使您可以使用PreferenceActivity來使用共享首選項來存儲設置。

你必須先膨脹這樣的菜單在您的活動:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

其中菜單包含菜單的細節,如這些(RES /菜單/ main.xml中):

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

這會在您點擊菜單按鈕時添加「您的設置名稱」作爲選項。現在使菜單按鈕做一些使用這種(把它放在你的mainactivity):

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    switch (item.getItemId()) 
    { 
    case R.id.item1: 
     //Do something here like in my case launch intent to my new settings menu 
     Intent options1 = new Intent(MainActivity.this, SettingsActivity.class); 
     startActivity(options1); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

既然叫「你的設置名稱」菜單按鈕將啓動設置活動。

0

我不認爲它是默認創建的。我必須自己做。無論如何,檢查你的活動的菜單文件,並檢查這個菜單是否在你的活動中使用。

+0

你的意思是我必須在我的XML文件中的菜單文件夾中添加一個設置項目? –

+0

是的,這就是我所做的。然後手動處理首選項活動的打開。 – Szymon