我正在尝试修改一个项目,该项目包含用于设置操作栏样式的代码。样式发生的方式是在每个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);
}
}
}
我看到的唯一问题是我需要能够传递当前屏幕的上下文,是否可以执行此操作,还是应该执行其他操作?
最佳答案
您无需具有当前屏幕的上下文,只需使用“ 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设置操作栏样式。