Я пытаюсь изменить проект, содержащий код для создания панели действий. То, как укладка происходит то, что в каждом FragmentActivity следующий код существует:Использование BaseActivity для OnResume Action Bar Styling
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
actionbarcolor = PreferenceData.getIntValues(AddJournalEntry.this,
"actionbarcolor");
if (actionbarcolor == 1) {
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLUE));
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowTitleEnabled(true);
} else if (actionbarcolor == 2) {
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED));
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowTitleEnabled(true);
}
}
Я хочу, чтобы создать новый базовый фрагмент класс активности, который имеет этот код в нем так, что для каждого экрана не нужно копировать/вставить/обновить этот код. я бы просто расширил его для других экранов. Я создал новый класс так:
package com.fasttracksites.skyrimjournal;
import android.app.ActionBar;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.app.FragmentActivity;
import com.fasttracksites.adapters.PreferenceData;
public class BaseActivity extends FragmentActivity {
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
actionbarcolor = PreferenceData.getIntValues(AddJournalEntry.this,
"actionbarcolor");
if (actionbarcolor == 1) {
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLUE));
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowTitleEnabled(true);
} else if (actionbarcolor == 2) {
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED));
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowTitleEnabled(true);
}
}
}
Единственная проблема, которую я вижу, что мне нужно, чтобы быть в состоянии передать контекст текущего экрана, можно ли это сделать, или я должен сделать что-то другой?
Почему вы не просто извлекаете стиль панели действий в XML-ресурс? Вот пример: http://developer.android.com/training/basics/actionbar/styling.html. Это будет держать ваш код немного чище, поскольку весь стиль будет в XML-файле вместо ваших java-файлов. – kformeck