Привет, я создаю приложение, где должно быть несколько фрагментов только с listView и несколько с вкладками. Моя текущая версия работает, но имеет два действия: один заменяет отдельные фрагменты и другие вкладки хостинга. Есть ли возможность реализовать только одно действие со всеми видами фрагментов?Как реализовать приложение с одним действием, несколькими отдельными фрагментами и несколькими фрагментами с вкладками?
TabHost активность (пример):
public class TaskListActivity extends SherlockFragmentActivity {
private ViewPager mViewPager;
private TabsAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
new AdvanceActionBar(this, this.getSupportActionBar());
mViewPager = new ViewPager(this);
adapter = new TabsAdapter(this, mViewPager);
mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(adapter);
mViewPager.setId(0x7F04FFF0);
mViewPager.setBackgroundColor(Color.parseColor("#ffffff"));
super.onCreate(savedInstanceState);
setContentView(mViewPager);
addTab("Do zrobienia", TaskListWaitingFragment.class, TaskListWaitingFragment.createBundle("Do zrobienia"));
addTab("Do wysłania", TaskListSendFragment.class, TaskListSendFragment.createBundle("Do wysłania"));
addTab("Weryfikacja", TaskListVerifyFragment.class, TaskListVerifyFragment.createBundle("Weryfikacja"));
addTab("Odrzucone", TaskListRejectedFragment.class, TaskListRejectedFragment.createBundle("Odrzucone"));
}
...
private class TabsAdapter extends FragmentPagerAdapter implements TabListener, ViewPager.OnPageChangeListener {
private final SherlockFragmentActivity mActivity;
private final ActionBar mActionBar;
private final ViewPager mPager;
/**
* @param fm
* @param fragments
*/
public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) {
super(activity.getSupportFragmentManager());
this.mActivity = activity;
this.mActionBar = activity.getSupportActionBar();
this.mPager = pager;
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}
@SuppressWarnings("rawtypes")
private class TabInfo {
public final Class fragmentClass;
public final Bundle args;
public TabInfo(Class fragmentClass,
Bundle args) {
this.fragmentClass = fragmentClass;
this.args = args;
}
}
@SuppressWarnings("rawtypes")
private List mTabs = new ArrayList();
@SuppressWarnings({ "rawtypes", "unchecked" })
public void addTab(CharSequence title, Class fragmentClass, Bundle args) {
final TabInfo tabInfo = new TabInfo(fragmentClass, args);
Tab tab = mActionBar.newTab();
tab.setText(title);
tab.setTabListener(this);
tab.setTag(tabInfo);
mTabs.add(tabInfo);
mActionBar.addTab(tab);
notifyDataSetChanged();
}
@Override
public Fragment getItem(int position) {
final TabInfo tabInfo = (TabInfo) mTabs.get(position);
return (Fragment) Fragment.instantiate(mActivity, tabInfo.fragmentClass.getName(), tabInfo.args);
}
@Override
public int getCount() {
return mTabs.size();
}
public void onPageScrollStateChanged(int arg0) {
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageSelected(int position) {
mActionBar.setSelectedNavigationItem(position);
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
TabInfo tabInfo = (TabInfo) tab.getTag();
for (int i = 0; i < mTabs.size(); i++) {
if (mTabs.get(i) == tabInfo) {
mPager.setCurrentItem(i);
}
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
Стандартная активность с фрагментами (пример):
public class CoreActivity extends SherlockFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onResume()
{
MessageFragment frag = new MessageFragment();
this.getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, frag)
.commit();
super.onResume();
}
Я использую его, но как переключить его в действие? – Mattiah85