我正在尝试修改一个项目,其中包含用于设置操作栏样式的代码。样式发生的方式是在每个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);
}
}
我想创建一个新的基本片段活动类,其中包含此代码,因此对于每个屏幕,我都不必复制/粘贴/更新此代码。我只是将其扩展到其他屏幕。我已经创建了一个新的类:
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);
}
}
}
我看到的唯一问题是我需要能够传递当前屏幕的上下文,是否可以这样做或者我应该做些不同的事情?
答案 0 :(得分:1)
您不需要拥有当前屏幕的上下文,您只需使用“this”即可。如果您在父类中有代码,则父和子的引用也是相同的。您可以像这样更新代码:
public class BaseActivity extends FragmentActivity {
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//Removed the AddJournalEntry before this
actionbarcolor = PreferenceData.getIntValues(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中的主题进行样式设置。如果你想让风格快速上升,我强烈推荐使用Android Asset Studio Action Bar Style Generator。这是一个很好的工具,可以为操作栏生成所需的样式和资源文件。确保查看它生成的文件,以熟悉如何使用xml设置操作栏的样式。