メインページのナビゲーションにActionBarを使用しています。このナビゲーションには、アプリのさまざまな領域への4つのタブが含まれています。
エリアの1つはマップセクションです。このセクションには、SQLiteデータベースから入力されたアイテムのリストを表示するための2つのサブタブが含まれている必要があります。
したがって、基本的には、ページフラグメントからネストされたナビゲーションを実装したいと思います。私がこれまでに持っているコードは次のとおりです。
//MainActivity.java
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setCustomView(R.layout.rowlayout);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout layoutView = (RelativeLayout)inflater.inflate(R.layout.action_bar_tab, null);
TextView tabText = (TextView) layoutView.findViewById(R.id.tabText);
ImageView tabImage = (ImageView) layoutView.findViewById(R.id.tabImage);
String dayOneName = getResources().getString(R.string.day_one);
Tab tab = actionBar.newTab();
tab.setIcon(R.drawable.cal);
TabListener<AgendaMain> dayOne = new TabListener<AgendaMain>(this,
dayOneName, AgendaMain.class);
tab.setTabListener(dayOne);
// set custom view
tabText.setText(dayOneName);
tabImage.setImageResource(R.drawable.cal);
tab.setCustomView(layoutView);
actionBar.addTab(tab);
// Plus three more navigation tabs
private class TabListener<T extends Fragment> implements
ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Check if the fragment is already initialized
if (mFragment == null) {
// If not, instantiate and add it to the activity
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
// If it exists, simply attach it in order to show it
ft.attach(mFragment);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
// Detach the fragment, because another one is being attached
ft.detach(mFragment);
}
}
@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
// User selected the already selected tab. Usually do nothing.
}
}
そして、上のタブはフラグメントにリンクしています。ここで、2つの新しいタブを追加し、両方のタブにListFragmentを表示します。
ここからFragmentTabHostを実装しようとしましたが、android.support.v4.appとMainActivity.javaのTabListenerの間で問題が発生します。これまでのところ、すべてのコードは機能しており、フラグメントにタブを追加しようとしています。
誰かがこれを実装するための最良の方法を提案/示すことができれば、それは大いにありがたいです(:私はこれまで静的コンテンツを表示することができましたが、これは良くありません!(要求された場合はコードをもっと投稿します、私はそれを疑っています私は運がなかったので助けになるでしょう!)