私はのstyles.xmlに定義することでテーマを設定し、そのアンドロイドの別のアプリリソースからテーマを変更するにはどうすればよいですか?
setTheme(android.R.style.MyTheme);
ようにそれを使用する方法があります知っている。しかし、私は私が同様に開発された別のアプリからテーマを取得したいです。私はリソース名を知っていて、実際にはこのコードブロックでテーマIDを取得できます。
Resources res = getPackageManager().getResourcesForApplication("com.example.theme");
int resThemeId = res.getIdentifier("my_theme","style","com.example.theme");
私がデバッグすると、resThemeIdがゼロではないことがわかります。
このテーマを設定するには、最後のコマンドが必要です。私は声明の下に書く場合super.onCreate()関数の前に、私はこのメソッドを実装しようとしたが、それはしかし、これに代えて
setTheme(resThemeId);
が動作していないようだ、私は正常に動作
setTheme(android.R.style.Theme_Holo_Light);
ので、異なるパッケージリソースのテーマを使用するにはどうすればよいですか?
他のパッケージからリソースIDを取得できますが、そのリソースはAPKに存在しません。 'PackageManager#getResourcesForApplication(String packageName) 'を使ってリソースを読み込むことは、drawable、文字列、boolなどでうまくいくはずです。しかし、別のAPKのテーマを読み込むことは可能であり、推奨できません。 –
私はdrawables、文字列、別のパッケージリソースからブール値を得ることができますが、私もテーマを得ることを期待しています。なぜそれは不可能ですか? – Berkay92
可能です(私の答えを見てください)。テーマを適用できるように、他のアプリのリソースを返すにはgetResroucesをオーバーライドする必要があります。これにより、他のアプリケーションからすべての文字列、レイアウト、ドロワブル、およびその他のリソースも返されるため、推奨されません。 –