0

アプリケーションの設定で設定を変更して、プログラムでテーマを設定することに問題があります。設定のオプションをクリックして、Holo と Holo Light を切り替えたいです。

推奨事項、ソースコード、知識、リンクなどは大歓迎です、ありがとう


DashboardActivity.java

public class DashboardActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Utils.onActivityCreateSetTheme(this);
    setContentView(R.layout.dashboard_layout);

    if (Settings.theme.equals("Theme1")) {
        Utils.changeToTheme(this, Utils.THEME_LIGHT);

}else (Settings.theme.equals("Theme2")) {

    Utils.changeToTheme(this, Utils.THEME_DARK);

}

設定.java

     public class Settings extends PreferenceActivity implements  
          OnSharedPreferenceChangeListener {   

 public static String theme = "Theme1";

    public void onBackPressed() {
    //  ListPreference listPreference2 = (ListPreference) findPreference("activityPref");
        ListPreference listPreference = (ListPreference) findPreference("themePref");
        String currValue = listPreference.getValue();
    //  String currValue2 = listPreference.getValue();
//      Log.d("ssss", "Value :" + currValue);
    //  Log.d("ssss", "Value :" + currValue2);

    //  activity = currValue2;
        theme = currValue;
        super.onBackPressed();

設定.xml

   <ListPreference
            android:title="Themes"
            android:summary="Change the UI of the application"
            android:key="themePref"
            android:entries="@array/themesReturnValue"
            android:entryValues="@array/themesDisplayWord" 
            android:defaultValue="Theme1"/>

配列.xml

    <string-array name="themesReturnValue">
    <item>Light</item>
    <item>Dark</item>

    </string-array>   
    <string-array name="themesDisplayWord">
    <item>Theme1</item>
    <item>Theme2</item>

スタイル

    <style name="LightThemeAndroid" parent="android:style/Theme.Holo.Light"> 
     </style>
   <style name="DarkThemeAndroid" parent="android:style/Theme.Holo">
    </style>

それが私が得たすべてです....私はそれが仕事であることを知っていますが、どんな助けも大歓迎です。ありがとうございました

4

1 に答える 1

0

Utils.onActivityCreateSetTheme(this);やなど、コードの重要な部分が欠落しており、Utils.changeToTheme(this, Utils.THEME_LIGHT);何が間違っているか/機能していないかを説明できます。

ただし、これが私のアプリで解決した方法です。

settings.xml

<ListPreference
   android:title="@string/theme_label"
   android:summary="@string/theme_summary"
   android:key="@string/theme_key"
   android:defaultValue="0"
   android:entries="@array/theme_entries"
   android:entryValues="@array/theme_values" />

文字列.xml

<string name="theme_label">Theme</string>
<string name="theme_summary">Change the app theme</string>
<string name="theme_key">theme</string>

配列.xml

<string-array name="theme_entries" translatable="false">
   <item>Holo Light</item>
   <item>Holo Dark</item>
</string-array>
<string-array name="theme_values" translatable="false">
   <item>0</item>
   <item>1</item>
</string-array>

Util.java

public class Util extends Activity {

public static void setAppTheme(Activity a) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(a);
    int mTheme = Integer.parseInt(sp.getString("theme", "0"));
    if (mTheme == 0) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
                a.setTheme(android.R.style.Theme_Holo_Light_DarkActionBar);
                return;
            }
            a.setTheme(android.R.style.Theme_Holo_Light);
        }
        else {
            a.setTheme(android.R.style.Theme_Light);
        }
    }
    else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        a.setTheme(android.R.style.Theme_Holo);
    } else {
        a.setTheme(android.R.style.Theme_Black);
        }
    }
}

MainActivity.java

@Override
public void onCreate(Bundle savedInstanceState) {
    Util.setAppTheme(this);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    }
于 2013-04-21T04:21:00.827 に答える