2015-10-18 3 views
0

Итак, в моем приложении я создал способ для пользователя установить тему как темную или светлую. Я реализовал его в каждом действии, но теперь, если тема темная, в действии есть 2 панели действий. Если я оставлю это в качестве легкой темы, покажет только одну панель действий. Это не имеет никакого смысла для меня. Вся помощь очень ценится. Благодарю.Изменение темы вызывает двойное действие бар сбой

Вот ПИК деятельности:

2 action bars

Вот код MainActivity:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     settings = getSharedPreferences(PREFS_NAME, 0); 
     checkDark(settings.getBoolean("darkMode", false)); 
     super.onCreate(savedInstanceState); 
     managerHelper = new ManagerDatabaseAdapter(this); 
     setContentView(R.layout.activity_main); 
     adapter = new RVAdapter(this, getData()); 
     RV = (RecyclerView) findViewById(R.id.mainV); 
     layoutManager = new LinearLayoutManager(this); 
     RV.setLayoutManager(layoutManager); 
     RV.setAdapter(adapter); 
     adapter.setClickListener(this); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     // getMenuInflater().inflate(R.menu.menu_main, li) 
     return true; 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK && exitD) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("Confirm exit") 
        .setPositiveButton("EXIT", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          finish(); 
         } 
        }) 
        .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
         } 
        }).show(); 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     switch (id) { 
      case R.id.action_settings: 
       Intent intent = new Intent(this, SettingsActivity.class); 
       intent.putExtra(EXTRA_MESSAGE, true); 
       startActivity(intent); 
       overridePendingTransition(R.anim.abc_popup_enter, R.anim.abc_fade_out); 
       return true; 
      case R.id.action_surveyList: 
       Intent survey = new Intent(this, GetSurvey.class); 
       survey.putExtra(EXTRA_MESSAGE, true); 
       startActivity(survey); 
       overridePendingTransition(R.anim.abc_popup_enter, R.anim.abc_fade_out); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    private void checkDark(boolean isChecked) { 
     if (isChecked) 
      setTheme(R.style.Dark); 
     else 
      setTheme(R.style.AppTheme); 
    } 
} 

Вот это styles.xml:

<resources>> 

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">#E53935</item> 
     <item name="colorPrimaryDark">#C62828</item> 
     <item name="android:navigationBarColor">#E53935</item> 
     <item name="android:colorAccent">#1565C0</item> 
     <item name="android:colorForeground">@color/foreground_material_light</item> 
     <item name="android:colorBackground">@color/background_material_light</item> 
     <!-- Other attributes --> 
    </style> 

    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="android:navigationBarColor">#E53935</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
     <item name="android:statusBarColor">@color/primary_dark_material_light</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    </style> 

    <style name="Dark" parent="@android:style/Theme.Material" > 
     <item name="android:colorForeground">@color/foreground_material_dark</item> 
     <item name="android:colorPrimary">@color/primary_material_dark</item> 
     <item name="android:colorPrimaryDark">@color/primary_dark_material_dark</item> 
     <item name="android:colorAccent">@color/accent_material_dark</item> 
     <item name="android:navigationBarColor">@color/primary_material_dark</item> 
    </style> 

    <style name="AppTheme.NoActionBar.Dark" parent="@style/AppTheme.NoActionBar" > 
     <item name="colorPrimary">#E53935</item> 
     <item name="colorPrimaryDark">#C62828</item> 
     <item name="android:navigationBarColor">#E53935</item> 
     <item name="android:colorAccent">#1565C0</item> 
     <item name="android:colorBackground">@color/background_material_dark</item> 
     <item name="android:textColorPrimary">@android:color/primary_text_dark</item> 
     <item name="android:textColorPrimaryInverse">@android:color/primary_text_light</item> 
     <item name="android:textColorSecondary">@android:color/secondary_text_dark</item> 
     <item name="android:textColorSecondaryInverse">@android:color/secondary_text_light</item> 
     <item name="android:statusBarColor">@color/primary_dark_material_dark</item> 
    </style> 

</resources> 

ответ

1

Не уверен, что это причина проблемы, а просто что-то отметить. Ваш родитель AppTheme из AppCompat, но ваша темная тема использует встроенную материальную тему.

+0

Да, это сделал трюк. Создала родительскую тему приложения, и все хорошо. –

1

Изменить родительский стиль Theme.Material.NoActionBar:

Ваш пользовательский стиль:

<style name="Dark" parent="@android:style/Theme.Material.NoActionBar" > 
... 
</style> 
+0

Это сработает, но я пошел дальше и сделал родителем тему приложения и просто изменил элементы оттуда. Я благодарен за ответ! –

Смежные вопросы