1. ホーム
  2. android

[解決済み] プログラムによるActivityのテーマ変更

2022-06-27 17:26:30

質問

特定のケースでは、アクティビティからダイアログテーマを削除する必要があるのですが、うまくいかないようです。以下はその一例です。

最初の活動

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startActivity(new Intent(MainActivity.this, SecondActivity.class));
}

2つ目の活動

public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setTheme(android.R.style.Theme);
    setContentView(R.layout.activity_second);
}

マニフェスト抜粋

 <activity android:name="SecondActivity" android:theme="@android:style/Theme.Dialog"></activity>

実行してもダイアログテーマのままです。

エーピーアイテン

ありがとうございます。

どのように解決するのですか?

として 諸注意 うんぬんかんぬん setTheme は、ビューの出力の前に表示されます。と思われます。 super.onCreate() かたぼうをかつぐ view の処理を行います。

そのため、テーマを動的に切り替えるには、単に setThemesuper.onCreate このように

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
}