无法访问设置活动(SharedPreferences)

时间:2013-09-22 08:08:42

标签: android xml settings 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>
到目前为止,eclipse并没有向我显示任何错误。但是当我运行我的应用程序时,没有菜单可以进入设置页面!我的印象是,当我创建设置活动时,Android会自动创建一个设置菜单。但没有菜单按钮或任何东西。我该如何解决这个问题?

2 个答案:

答案 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)

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