2013-09-22 56 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