web-dev-qa-db-ja.com

Androidで設定アクティビティと設定フラグメントを作成するにはどうすればよいですか?

私は古いチュートリアルに従っていたので( Créezdes applications pour Android-> openclassroom )この非推奨のメソッドaddPreferencesFromResource(int id)でPreferenceActivityにこだわったクラス。

だから私の質問は:

Androidで設定を作成する新しい方法は何ですか?

40
WannaGetHigh

この投稿の解決策が気に入った: http://alvinalexander.com/Android/android-tutorial-preferencescreen-preferenceactivity-preferencefragment

..それは、非常に基本的なものをすぐに起動して実行する必要があるだけの人にとっては最もコンパクトに見えるためです。 1つの.Javaファイルと2つの小さなxmlファイルのみがあります。

アクティビティ設定リマインダー

3つのファイルをプロジェクトに追加した後、忘れずに

A)Prefsアクティビティをマニフェストファイルに追加する
B)Prefsアクティビティを起動する方法を追加します。たとえば、ボタンまたはメニュー項目

次のファイルをプロジェクトに追加します。コンパイルエラーを回避するには、リストされている順序を使用します。

  1. /res/values/array.xmlを追加します

    <resources>
        <string-array name="listArray">
            <item>Ace</item>
            <item>Club</item>
        </string-array>
    
        <string-array name="listValues">
            <item>Ace</item>
            <item>Club</item>
        </string-array>
    </resources>
    
  2. /res/xml/preferences.xmlを追加します

    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:Android="http://schemas.Android.com/apk/res/Android">
        <EditTextPreference Android:title="Your Name"
                            Android:key="username"
                            Android:summary="Please provide your username"></EditTextPreference>
        <CheckBoxPreference Android:title="Application Updates"
                            Android:defaultValue="false"
                            Android:summary="This option if selected will allow the application to check for latest versions."
                            Android:key="applicationUpdates" />
        <ListPreference     Android:title="Download Details"
                            Android:summary="Select the kind of data that you would like to download"
                            Android:key="downloadType"
                            Android:defaultValue="Ace"
                            Android:entries="@array/listArray"
                            Android:entryValues="@array/listValues" />
    </PreferenceScreen>
    
  3. アクティビティコードを追加する

    public class AppPreferenceActivity extends PreferenceActivity
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            getFragmentManager().beginTransaction().replace(Android.R.id.content, new MyPreferenceFragment()).commit();
    
            checkValues();
        }
    
        public static class MyPreferenceFragment extends PreferenceFragment
        {
            @Override
            public void onCreate(final Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.preferences);
            }
        }
    
        private void checkValues()
        {
            SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
            String strUserName = sharedPrefs.getString("username", "NA");
            boolean bAppUpdates = sharedPrefs.getBoolean("applicationUpdates",false);
            String downloadType = sharedPrefs.getString("downloadType","1");
    
            String msg = "Cur Values: ";
            msg += "\n userName = " + strUserName;
            msg += "\n bAppUpdates = " + bAppUpdates;
            msg += "\n downloadType = " + downloadType;
    
            Toaster.shortDebug(msg);
        }
    }
    
19
Gene Bo