-2

さて、私が見つけたすべての投稿はこれを機能させることができません、私は私のリスト設定の中にしようとしています

Settingsbasic.xml

<ListPreference
  android:title="themes"
  android:summary="Select the option of the list"
  android:key="listPref"
  android:entries="@array/Themes"
  android:entryValues="@array/list" 
  android:defaultValue="default" />

上記のように、これが私のsettingsbasic.xmlファイル内のリスト設定です。今、私が行う方法を知る必要があるのは、私の主な活動である2つのJavaファイルがあることです。と私の好みのJavaファイル。ユーザーが何かを実行したり、何かを開いたり、UIを変更したりするエントリのいずれかをクリックしたときに、どうすればよいかを知る必要があります。コードがどこにどのように配置されるかを知る必要があります。主な活動または選好活動の内部。

これが私の好みのJavaファイルです

  public class Prefs extends PreferenceActivity {

ListPreference listPref;

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settingsbasic);


       }

    protected void onResume() {
    super.onResume();

 // Registers a callback to be invoked whenever a user changes a preference.
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

} 

protected void onPause() {
    super.onPause();

 // Unregisters the listener set in onResume().
    // It's best practice to unregister listeners when your app isn't using them to cut down on
    // unnecessary system overhead. You do this in onPause().
    getPreferenceScreen()
            .getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);

  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        // Sets refreshDisplay to true so that when the user returns to the main
        // activity, the display refreshes to reflect the new settings.
        WebViewClientDemoActivity.????? = true;
    }

 }

どんなサンプルコードでも役立つか、上記の私のコードに追加します。このコードに光を当てることができる人が必要です。私は非常に多くの異なることを試しましたが、どれもうまくいきません。

さて、ここで推奨されているサンプルアプリのメソッドを使用すると、私が持っているコードがさらにいくつかあります。

 Main Activity   

  public class WebViewClientDemoActivity extends Activity {

    public static String sPref = null;

    public void onStart() {
        super.onStart();

     // Gets the user's network preference settings
        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
     // Retrieves a string value for the preferences. The second parameter
        // is the default value to use if a preference value is not found.
        sPref = sharedPrefs.getString("listPref", "Default");

         }
4

2 に答える 2

1

これは私がPreferenceActivityを使用した方法です:

public class EditPrefs extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.screen_prefs);
    }
}

次に、/ res/xmlフォルダーにXMLファイルがあります。

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">

     <ListPreference
        android:key="txtColor"
        android:title="textView Color"
        android:summary="select color for textViews"
        android:entries="@array/txtColor"
        android:entryValues="@array/txtColorValues" />
</PreferenceScreen>

そして/res/ valuesには、このXMLファイルにアイテムとその値が含まれています。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="txtColor">
        <item>blue</item>
        <item>brown</item>
        <item>gray</item>
        <item>violet</item>
    </string-array>
    <string-array name="txtColorValues">
        <item>#ff000099</item>
        <item>#5F1E02</item>
        <item>#333333</item>
        <item>#421C52</item>
    </string-array>
</resources>

次に、たとえばユーザーがメニュー項目をクリックしたときに、別のAndroidクラスからこのクラスを簡単に呼び出します。

startActivity(new Intent(this, EditPrefs.class));

onCreateおよびonResumeで、次のように設定を呼び出すことができます。

@Override
protected void onResume() {  
    super.onResume();
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    String txtColor = prefs.getString("txtColor", DEFAULT COLOR); // for instanse : #ff000099 
    textView.setBackgroundColor(Color.parseColor(txtColor));
}
于 2012-07-26T17:19:59.723 に答える
1

これで質問は解決しました。

設定

 public static String theme = "Theme1";

    @Override
    public void onBackPressed() {
      ListPreference listPreference = (ListPreference) findPreference("listPref");
      String currValue = listPreference.getValue();
      theme = currValue;
      super.onBackPressed();

   }

主な活動

 if (Prefs.theme.equals("Theme1"))
setContentView(R.layout.main);
    else 
       setContentView(R.layout.main2);

優先XML

 <ListPreference
android:title="themes"
android:summary="Select the option of the list"
android:key="listPref"
android:entries="@array/listReturnValue"
android:entryValues="@array/listDisplayWord" />
于 2012-07-26T19:39:37.813 に答える