0

当我运行我的应用程序时,没有菜单按钮可以转到设置活动。我有一个使用共享首选项的设置活动。我这样调用主活动:

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 会自动创建一个设置菜单。但是没有菜单按钮或任何东西。我怎样才能解决这个问题?

4

2 回答 2

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);
    }
}

现在名为“您的设置名称”的菜单按钮将启动您的设置活动。

于 2013-09-22T08:18:34.993 回答
0

我不认为它是默认创建的。我必须自己做。无论如何,请检查您的活动的菜单文件,并检查您的活动中是否使用了此菜单。

于 2013-09-22T08:12:49.580 回答