0

アプリケーションを実行すると、設定アクティビティに移動するためのメニュー ボタンがありません。共有設定を使用する設定アクティビティがあります。次のように Main Activity を呼び出します。

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 が自動的に設定メニューを作成するという印象を受けました。しかし、メニューボタンなどはありません。どうすればこれを修正できますか?

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 に答える