2017-02-04 1 views
1

안드로이드 애플 리케이션 내부의 테마를 변경하는 방법 Light 나 Dark 테마를 선택할 수있는 설정이있는 활동이 있습니다.Android 변경 테마 내부 앱

설정 활동 enter image description here 나는 이런 식으로 뭔가를 사용할 수 있습니다

public class OTGEnabler extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_otgenabler); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
     String theme = sharedPrefs.getString("Choose Theme",null); 
     if(theme != null && theme.equals("Light")) 
     { 
      setTheme(R.style.AppTheme); 
     } 
     else 
     { 
      setTheme(R.style.AppTheme_AppBarOverlay); 
     } 
    } 
} 

다음은 오류 로그입니다 : 16 :

7월 2일부터 4일까지 40.023 23924-23924/COM은. example.pavle.usbotgenabler E/AndroidRuntime : 치명적 예외 : 주 프로세스 : com.example.pavle.usbotgenabler, PID : 23924 java.lang.RuntimeException가 : java.lang.IllegalStateException : 활동 ComponentInfo {com.example.pavle.usbotgenabler/com.example.pavle.usbotgenabler.otg_enaber.OTGEnabler} 시작할 수 없습니다이 작업을 이미 작업 바있다 창 장식에 의해 제공됩니다. Window.FEATURE_SUPPORT_ACTION_BAR을 요청하지 말고 의 테마에서 툴바를 대신 사용하려면 windowActionBar를 false로 설정하지 마십시오. android.app.ActivityThread.-wrap11에서 android.app.ActivityThread.performLaunchActivity android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476)에서 (ActivityThread.java:2416) (ActivityThread.java)에서 atandroid.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:148) android.app.ActivityThread.main (ActivityThread.java:5417)의 at java.lang.reflect.Metho d.invoke (네이티브 메소드) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) 발생 원인 : java.lang.IllegalStateException :이 액티비티에는 이미 창 장식에서 제공 한 작업 표시 줄 이 있습니다. Window.FEATURE_SUPPORT_ACTION_BAR을 요청하지 말고 의 테마에서 툴바를 대신 사용하려면 windowActionBar를 false로 설정하지 마십시오. com.example.pavle에서 android.support.v7.app.AppCompatActivity.setSupportActionBar (AppCompatActivity.java:133)에서 android.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar (AppCompatDelegateImplV9.java:203) 에서 .usbotgenabler.otg_enaber.OTGEnabler.onCreate android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107)에서 (OTGEnabler.java:80) android.app.Activity.performCreate (Activity.java:6237)에서 에서 android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2369) android.app.ActivityThread $ H.handleMessage에서 android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) android.app.ActivityThread.-wrap11 (ActivityThread.java) 에서 (ActivityThread.java:1344에서) android.os.Handler.dispatchMessage (Handler.java:102) android.os.Looper.loop (Looper.java:148)에서 android.app.ActivityThread.main (ActivityThread.java:5417)에서 에서 java.lang.reflect.Method의 . 호출 com.android.internal.os.ZygoteInit.main에서 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) 에서 (기본 방법) (ZygoteInit.java:616)

+0

코드는 어떻게됩니까? – Raghunandan

+0

응용 프로그램을 실행할 때 응용 프로그램이 작동을 멈췄습니다. – pavlenis1906

+0

그때 그 추락 pls 관련 로그를 게시 – Raghunandan

답변

0

당신이 할 수있는을 setTheme(..) 안에 onCreate,, setContentView(...), super.oncreate()을 호출하면 제대로 작동합니다.


추가 지원

은보기에 편집 텍스트를 추가

테마 하나

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

테마 두

<style name="AppThemeTwo" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorAccent">@color/blue</item> 
</style> 

이 두 가지를 추가하면 커서 색상 커서 색상과 같은 EditText과 다를 수 있습니다.

+0

@ pavlenis1906 다른 질문이있는 경우 [Ask Question] (// stackoverflow.com/questions/ask) 버튼을 클릭하여 질문하십시오. 친절하게 대답하는 사람을 싫어하지 마십시오. –

0

androidManifest.xml 설정 활동의 파일 변경 테마 설정에 필요한 새로운 테마로 파일 변경 테마 activit 와이.

이 새로운 주제는 에 정의되어 있어야합니다 values-> style.xml

XML 태그 다음의 AndroidManifest.xml 파일에 설정 활동에 추가 안드로이드 존재하지 않는 경우 : 테마

+0

테마를 추가했지만 탐색 창에서 설정을 선택하면 오류 응용 프로그램이 작동을 멈췄습니다 !!! pavlenis1906

+0

로그 cat 출력에서 ​​오류 메시지를 공유 할 수 있습니까? – vicky

+0

왜 로그 고양이를 원하십니까? – pavlenis1906