カスタムの titleBar と ActionBar の間の競合が原因で、アプリケーションがクラッシュすることはわかっています。しかし、私が理解できないのは、CustomView を実装していなくても ActionBar.newTab().setText(categoryList[0]) が機能しない理由です
これが私のカスタムタイトルバースタイルです:
<resources>
<style name="CustomWindowTitleBackground">
<item name="android:background">#323331</item>
</style>
<style name="CustomTheme" parent="android:Theme">
<item name="android:windowTitleSize">35dip</item>
<item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
</style>
</resources>
/***
私のアクティビティのコード:
public class TestingEndlessAdapterFragmentDemo extends Activity implements
ActionBar.TabListener {
private TestingEndlessAdapterFragment simple = null;
private TestingEndlessAdapterCustomTaskFragment customTask = null;
private static enum Tabs {
TAB_FUN, TAB_MOVIE, TAB_STANDUP, TAB_MUSIC;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
final ActionBar bar = getActionBar();
// titlebar_title.setText("Prefeerences");
// titlebar_icon.setImageResource(R.drawable.titlebar_list);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
String[] categoryList = new String[4];
categoryList = getResources().getStringArray(R.array.category_name);
bar.addTab(bar.newTab().setText(categoryList[0]).setTabListener(this)
.setTag(Tabs.TAB_FUN));
bar.addTab(bar.newTab().setText(categoryList[1]).setTabListener(this)
.setTag(Tabs.TAB_MOVIE));
bar.addTab(bar.newTab().setText(categoryList[2]).setTabListener(this)
.setTag(Tabs.TAB_STANDUP));
bar.addTab(bar.newTab().setText(categoryList[3]).setTabListener(this)
.setTag(Tabs.TAB_MUSIC));
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
onTabSelected(tab, ft);
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
switch ((Tabs) tab.getTag()) {
case TAB_FUN:
showSimple(ft);
break;
case TAB_MOVIE:
showCustom(ft);
break;
case TAB_STANDUP:
showCustom(ft);
break;
case TAB_MUSIC:
showCustom(ft);
break;
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// no-op
}
private void showSimple(FragmentTransaction ft) {
if (simple == null) {
simple = new TestingEndlessAdapterFragment();
}
ft.replace(android.R.id.content, simple);
}
private void showCustom(FragmentTransaction ft) {
if (customTask == null) {
customTask = new TestingEndlessAdapterCustomTaskFragment();
}
ft.replace(android.R.id.content, customTask);
}
}
setText() 以外はすべて正常に動作します