当我运行我的应用程序时,没有菜单按钮可以转到设置活动。 我有一个使用共享首选项的设置活动。我在主活动中这样打电话:
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>
到目前为止,eclipse并没有向我显示任何错误。但是当我运行我的应用程序时,没有菜单可以进入设置页面!我的印象是,当我创建设置活动时,Android会自动创建一个设置菜单。但没有菜单按钮或任何东西。我该如何解决这个问题?
答案 0 :(得分:1)
菜单和共享偏好没有直接关联。共享首选项将值存储在存储中。菜单将是图形布局,将您带到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;
}
其中menu包含菜单详细信息(res / menu / 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>
当您单击菜单按钮时,这将添加“您的设置名称”作为选项。现在让菜单按钮做一些事情(把它放在你的主要活动中):
@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);
}
}
现在,名为“您的设置名称”的菜单按钮将启动您的设置活动。
答案 1 :(得分:0)
我不认为它是默认创建的。我必须自己做。无论如何,请检查您的活动的菜单文件,并检查您的活动中是否使用了此菜单。