Как изменить тему в других activity?

177
15 января 2020, 08:20

Я новичок и прошу помощи. Есть ThemesActivity в котором прописано динамическое изменение темы при выборе одного из radiobutton. Есть файл Utils.Java, который отвечает за смену темы и перезапуск activity. Как мне сделать так, чтобы при выборе (например dark radiobutton) у меня тема менялась не только в ThemesActivity, но и в остальных activity тоже? У меня есть еще MainActivity и InfoActivity.

Utils.Java

package com.example.calc;
import android.app.Activity;
import android.content.Intent;
public class Utils {
    private static int sTheme;
    public final static int THEME_DEFAULT = 0;
    public final static int THEME_DARK = 1;
    public final static int THEME_AMOLED = 2;
    /**
     * Set the theme of the Activity, and restart it by creating a new Activity of the same type.
     */
    public static void changeToTheme(Activity activity, int theme)
    {
        sTheme = theme;
        activity.finish();
        activity.startActivity(new Intent(activity, activity.getClass()));
    }
    /** Set the theme of the activity, according to the configuration. */
    public static void onActivityCreateSetTheme(Activity activity)
    {
        switch (sTheme)
        {
            default:
            case THEME_DEFAULT:
                activity.setTheme(R.style.LightTheme);
                break;
            case THEME_DARK:
                activity.setTheme(R.style.DarkTheme);
                break;
            case THEME_AMOLED:
                activity.setTheme(R.style.AMOLEDTheme);
                break;
        }
    }
}

ThemesActivity.Java

package com.example.calc;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.MenuItem;
import android.widget.RadioGroup;
import android.widget.Toast;
public class ThemesActivity extends AppCompatActivity {
    private Toolbar toolbar;
    RadioGroup radioGroup;
    static final private int CHOOSE_THIEF = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Utils.onActivityCreateSetTheme(this);
        setContentView(R.layout.activity_themes);
        toolbar = (Toolbar) findViewById(R.id.my_toolbar);
        toolbar.setTitleTextColor(0xFF616770);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Темы");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        radioGroup.clearCheck();
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case -1:
                        Toast.makeText(getApplicationContext(), "Ничего не выбрано",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.light:
                        Utils.changeToTheme(ThemesActivity.this, Utils.THEME_DEFAULT);
                        Toast.makeText(getApplicationContext(), "Light тема",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.amoled:
                        Utils.changeToTheme(ThemesActivity.this, Utils.THEME_AMOLED);
                        Toast.makeText(getApplicationContext(), "AMOLED тема",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.dark:
                        Utils.changeToTheme(ThemesActivity.this, Utils.THEME_DARK);
                        Toast.makeText(getApplicationContext(), "Dark тема",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.user1:
                        Toast t = Toast.makeText(ThemesActivity.this, "HumanZ тема", Toast.LENGTH_SHORT);
                        t.setGravity(Gravity.CENTER,0,0);
                        t.show();
                        Toast t1 = Toast.makeText(ThemesActivity.this, "Не работает", Toast.LENGTH_SHORT);
                        t1.setGravity(Gravity.CENTER,0,150);
                        t1.show();
                        break;
                    default:
                        break;
                }
            }
        });
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                Intent intent = new Intent(this, MainActivity.class);
                startActivityForResult(intent, CHOOSE_THIEF);
                overridePendingTransition(R.anim.right_in,R.anim.alpha16);
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}
READ ALSO
(Java) Значение, проверяемое if, истинно, но срабатывает else

(Java) Значение, проверяемое if, истинно, но срабатывает else

Недавно начал учить Java, изучал if, решил вот такое написатьПри вводе правильного username и password, которые соответствуют adminUsername и adminPassword, всё-равно...

148
Не знаю, какие классы использовать для создания анимации на SurfaceView в потоке Surface Holder

Не знаю, какие классы использовать для создания анимации на SurfaceView в потоке Surface Holder

Есть массив элементов: у каждого есть координаты, bitmap и список анимаций (поворот, перемещение), который элемент должен выполнитьВсе в потоке...

146
SimpleDateFormatter Android Studio

SimpleDateFormatter Android Studio

пытаюсь спарсить дату вида "2510

146
Как посмотреть исходный код методов scale(), rotate(), translate() класса Graphics2D?

Как посмотреть исходный код методов scale(), rotate(), translate() класса Graphics2D?

Из класса Graphics2D я использую методы scale(), rotate(), translate()Есть ли способ посмотреть полный исходный код этих методов, чтобы в дальнейшем я смогла...

132