BaseExpandableListAdapter
옵션을 선택하여 테마를 변경하려고합니다. 옵션을 선택할 수 있으며 OK를 실행하는 것으로 보입니다. 로그에서 좋은 결과를 얻었습니다. 그러나 테마는 바뀌지 않습니다. 아무도 도와 줄 수 있니? 나는 무엇을 놓칠 수 있 었는가?테마 변경이 작동하지 않습니다.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light"></style>
<!-- Application theme. -->
<style name="Inicial" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/Inicial.ActionBar</item>
</style>
<style name="Inicial.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@drawable/logo_generico</item>
<item name="android:icon">@android:color/transparent</item>
<item name="android:titleTextStyle">@style/NoTitleText</item>
<item name="android:subtitleTextStyle">@style/NoTitleText</item>
</style>
<style name="JUCEES" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/JUCEES.ActionBar</item>
</style>
<style name="JUCEES.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@drawable/logo_es</item>
<item name="android:icon">@android:color/transparent</item>
<item name="android:titleTextStyle">@style/NoTitleText</item>
<item name="android:subtitleTextStyle">@style/NoTitleText</item>
</style>
<style name="JUCEB" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/JUCEB.ActionBar</item>
</style>
<style name="JUCEB.ActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@drawable/logo_ba</item>
<item name="android:icon">@android:color/transparent</item>
<item name="android:titleTextStyle">@style/NoTitleText</item>
<item name="android:subtitleTextStyle">@style/NoTitleText</item>
</style>
<style name="NoTitleText">
<item name="android:textSize">0sp</item>
<item name="android:textColor">#00000000</item>
</style>
업데이트 1
내가했던 이러한 변화 : 여기
public class MainActivity extends Activity {
static final int THEME_REQUEST = 1;
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == THEME_REQUEST) {
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
System.out.println("Troca tema: " + bundle.getInt("theme"));
alteraTema(bundle.getInt("theme"));
}
}
}
public void alteraTema(int sTheme) {
switch (sTheme)
{
default:
case 0:
System.out.println("Tema BA");
this.setTheme(R.style.JUCEB);
this.recreate();
break;
case 1:
System.out.println("Tema ES");
this.setTheme(R.style.JUCEES);
this.recreate();
break;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Configuracao.urlApi == null){
Intent intent = new Intent(MainActivity.this, Configuracao.class);
startActivityForResult(intent, THEME_REQUEST);
}
내 styles.xml입니다 : 여기
내 MainActivity
의 일부입니다
public void alteraTema(int sTheme) {
switch (sTheme)
{
case 0:
temaEscolha = (R.style.JUCEB);
setTheme(temaEscolha);
System.out.println("Tema BA");
break;
case 1:
temaEscolha = (R.style.JUCEES);
setTheme(temaEscolha);
System.out.println("Tema ES");
break;
}
그리고
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(temaEscolha);
setContentView(R.layout.activity_main);
는 지금은 Main_Activity를 제외하고, 모든 활동에 대한 테마를 변경할 수 있어요. 그리고 테마를 처음 변경하는 경우에만 작동합니다. 변경을 다시 시도하면 작동하지 않습니다.
업데이트 2
나는이 않았다
private void finishWithResult() {
Intent intent = new Intent();
intent.putExtra("theme", Selecao);
setResult(Activity.RESULT_OK, intent);
finish();
}
를 해결 :
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == THEME_REQUEST) {
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
System.out.println("Troca tema: " + bundle.getInt("theme"));
alteraTema(bundle.getInt("theme"));
startActivity(getIntent());
finish();
}
}
}
그리고 내 Confi.java에서
이 어디 내 선택이다, 나는이 있습니다protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == THEME_REQUEST) {
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
System.out.println("Troca tema: " + bundle.getInt("theme"));
alteraTema(bundle.getInt("theme"));
finish();
startActivity(getIntent());
}
}
}
고맙습니다! 하지만이 방법은 하나의 활동 테마 만 변경하는 것이지 전체 앱을 변경하는 것이 아닙니다. 모든 활동에 테마를 변경해야합니다. – AllMac
protected void onCreate (savedBundle savedInstanceState) { \t \t super.onCreate (savedInstanceState); \t \t setTheme (R.style.JUCEES); \t \t setContentView (R.layout.activity_main); – AllMac
네, 하나의 액티비티에 대한 테마를 변경합니다. 코드에서 테마를 선택하면 각 활동에 테마를 설정해야합니다. 당신은 액티비티를 확장하는 자신 만의 액티비티 클래스 (MyActivity와 같은)를 구현할 수 있으며 onCreate()에 테마를 설정합니다. 각 Activity 클래스는 myActivity를 확장하고 setContentView를 호출하기 전에 super.onCreate를 호출합니다. –