0

ユーザーが選択できるさまざまなスタイルを保持するスタイル xml を作成しました。ただし、ユーザーが何を選択しても、私のスタイルはデフォルトで最後のスタイル (緑) になります。何か不足していますか?メニュークラス

 public class UserMenu extends Activity implements OnClickListener {
    Button preview;
    Spinner spinnerColor;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            if("Red".equals(getIntent().getStringExtra("Theme")));
            {
                setTheme(R.style.Theme_Red);
            }
            if("Green".equals(getIntent().getStringExtra("Theme")));
            {
                setTheme(R.style.Theme_Blue);
            }
            if("Blue".equals(getIntent().getStringExtra("Theme")));
            {
                setTheme(R.style.Theme_Green);
            }

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_user_menu);

            spinnerColor = (Spinner) findViewById(R.id.spinnerColorMenu);
            //TextView Title = (TextView)findViewById(R.id.ViewModuleTitle);

            preview = (Button)findViewById(R.id.previewButton);
               preview.setOnClickListener(this);



        }

        public void onClick(View v)


        {
            String bgColor = spinnerColor.getSelectedItem().toString();
            if(bgColor.equals("Red"))
             {
                Intent intent = getIntent();
                intent.putExtra("Theme", "Red");
              finish();
              startActivity(intent);
             }
             else if(bgColor.equals("Blue"))
             {
                 Intent intent = getIntent();
                intent.putExtra("Theme", "Blue");
               finish();
               startActivity(intent);
             }

             else if(bgColor.equals("Green"))
             {
                 Intent intent = getIntent();
                intent.putExtra("Theme", "Green");
               finish();
               startActivity(intent);
             }


        }
    }

レイアウト

    <TextView
        android:id="@+id/ViewModuleTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:text="@string/addModule"
        android:textSize="22dp"
        style="?textTitle" />

    <TextView
        android:id="@+id/lableTextModuleCode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/enterModuleCode"
        android:layout_marginLeft="10dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        style="?textBody"/>

     <Spinner
        android:id="@+id/spinnerColorMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/colorMenu"/>

     <Button
          android:id="@+id/previewButton"
          android:layout_width="150dp"
          android:layout_height="wrap_content"
          android:layout_marginBottom="10dp"
          android:onClick="previewButton"
          android:text="@string/addModule" />

     </LinearLayout>

スタイル

<style name ="redBody">
         <item name="android:textColor">@color/red</item>
        <item name ="android:background">@color/white</item>
    </style>

    <style name ="redTitle">
         <item name="android:textColor">@color/white</item>
        <item name ="android:background">@color/red</item>
    </style>

    <style name ="blueBody">
         <item name="android:textColor">@color/darkBlue</item>
        <item name ="android:background">@color/white</item>
    </style>

    <style name ="blueTitle">
         <item name="android:textColor">@color/white</item>
        <item name ="android:background">@color/darkBlue</item>
    </style>

    <style name ="greenBody">
         <item name="android:textColor">@color/green</item>
        <item name ="android:background">@color/white</item>
    </style>

    <style name ="greenTitle">
         <item name="android:textColor">@color/white</item>
        <item name ="android:background">@color/green</item>
    </style>

    <style name = "Theme" parent="@android:style/Theme">
        </style>

    <style name = "Theme.Red" >
        <item name="textTitle">@style/redTitle</item>
        <item name="textBody">@style/redBody</item>

        </style>

    <style name = "Theme.Blue" >
        <item name="textTitle">@style/blueTitle</item>
        <item name="textBody">@style/blueBody</item>

        </style>
    <style name = "Theme.Green">
        <item name="textTitle">@style/greenTitle</item>
        <item name="textBody">@style/greenBody</item>

        </style>
4

1 に答える 1

1

テーマ名をSharedPreferencesに保存してみてください。

private SharedPreferences preferences;

@Override
protected void onCreate(Bundle state){
   super.onCreate(state);
   . . .

   // Restore preferences
   preferences = getSharedPreferences("YourPrefsName", 0);
   String theme = preferences.getString("THEME", false);

   //set your theme.
}

public void onClick(View v) {
    SharedPreferences.Editor preferencesEditor = preferences.edit();
    String bgColor = spinnerColor.getSelectedItem().toString();
    preferencesEditor.putString("THEME", bgColor);
    preferencesEditor.commit();
}
于 2012-11-07T13:28:16.037 に答える