2017-02-04 12 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); 
     } 
    } 
} 

をエラーログです:

2月4日07:16: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.performLaunchActivity(ActivityThread.java:2416) でandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) android.app.ActivityThread.-wrap11(ActivityThread.java)で でandroid.os.Looper.loopでandroid.app.ActivityThread $ H.handleMessage android.os.Handler.dispatchMessageで(ActivityThread.java:1344) (Handler.java:102) (Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417)の (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に設定しないでください。 でandroid.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar(AppCompatDelegateImplV9.java:203) でandroid.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:133) com.example.pavleで.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.-wrap11で でandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) (ActivityThread.java) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344で) android.os.Handler。(%% message%)%% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %% message %%から% 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(..)onCreatesetContentView(...)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> 

これら2つを追加すると、EditTextのカーソル色カーソルのポインタの色などの違いに気づくでしょう。

+0

@ pavlenis1906別の質問がある場合は、[Ask Question](// stackoverflow.com/questions/ask)ボタンをクリックして質問してください。回答者を間違えてしまうのをやめてください。 –

0

androidManifest.xml設定変更のテーマを設定変更する必要がある新しいテーマに変更するy。

xmlタグ アンドロイド下記のAndroidManifest.xmlファイルの設定アクティビティに追加存在しない場合は、この新しいテーマは値 - > style.xml

で定義する必要があります。テーマ

+0

テーマを追加しましたが、ナビゲーション・ドロワーから設定を選択すると、エラー・アプリケーションが動作を停止しました!!! "アクティビティandroid:name ="。settings.Settings " android:theme =" @ style/AppTheme.AppBarOverlay "/> – pavlenis1906

+0

あなたはlog catの出力からエラーメッセージを共有できますか? – vicky

+0

なぜあなたはログ猫をしたいですか? – pavlenis1906

関連する問題