मैंने एक ViewPagerSllock को एक ViewPager और TabsAdapter के साथ कार्यान्वित किया। यह अच्छी तरह से काम करता है लेकिन अब मैंने "टैब 1" में लोड किए गए फ्रेमवर्क से "धक्का" करने का प्रयास किया है।एक्शनबैरशेलॉक, व्यूपेगर, टैब एडाप्टर नेस्टेड टैब फ्रैगमेंट्स
व्यवहार किया जाना चाहिए की तरह:
- मैं अपने आवेदन, में 3 टैब्स है जब मैं पहली बार टैब को देखने के शुरू करने, जहां एक बटन के साथ एक टुकड़ा यह
- में है सबसे पहले पर बटन दबाने टैब, पहले टैब पर टुकड़ा प्रतिस्थापित किया जाना चाहिए और एक अन्य टुकड़ा
प्रदर्शित किया जाना चाहिए मैं इस को लागू करने की कोशिश की, लेकिन मैं एक काले रंग की टुकड़ा है जब जगह।
कोड:
FragmentDemoActivity.java
public class FragmentDemoActivity extends SherlockFragmentActivity {
CustomViewPager mViewPager;
TabsAdapter mTabsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
mViewPager = (CustomViewPager)findViewById(R.id.pager);
mViewPager.setSwipingEnabled(false);
mTabsAdapter = new TabsAdapter(this, bar, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText("tab1"),
FragmentA.class, null);
mTabsAdapter.addTab(bar.newTab().setText("tab2"),
FragmentB.class, null);
setTitle(R.string.app_name);
if (savedInstanceState != null) {
bar.setSelectedNavigationItem(savedInstanceState.getInt("tab"));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("tab", getSupportActionBar().getSelectedNavigationIndex());
}
public static class TabsAdapter extends FragmentPagerAdapter
implements ViewPager.OnPageChangeListener, ActionBar.TabListener {
private final Context mContext;
private final ActionBar mBar;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
static final class TabInfo {
private final Class<?> clss;
private final Bundle args;
TabInfo(Class<?> _class, Bundle _args) {
clss = _class;
args = _args;
}
}
public TabsAdapter(FragmentActivity activity, ActionBar bar, ViewPager pager) {
super(activity.getSupportFragmentManager());
mContext = activity;
mBar = bar;
mViewPager = pager;
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
}
public void addTab(ActionBar.Tab tab, Class<? extends Fragment> clss, Bundle args) {
TabInfo info = new TabInfo(clss, args);
tab.setTag(info);
tab.setTabListener(this);
mTabs.add(info);
mBar.addTab(tab);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mTabs.size();
}
@Override
public Fragment getItem(int position) {
TabInfo info = mTabs.get(position);
return Fragment.instantiate(mContext, info.clss.getName(), info.args);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Object tag = tab.getTag();
for (int i=0; i<mTabs.size(); i++) {
if (mTabs.get(i) == tag) {
mViewPager.setCurrentItem(i,false);
}
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
}
FragmentA.java
public class FragmentA extends Fragment {
Button button;
int num;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved)
{
return inflater.inflate(R.layout.frag_a, group, false);
}
@Override
public void onActivityCreated (Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
num = 0;
button = (Button) getActivity().findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentB f1 = new FragmentB();
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.pager, f1,"newTag");
ft.show(f1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
});
}
}
मैं Android विकास पर नया हूँ, इसलिए मैं अगर खुशी होगी कोई मेरी मदद करने में सक्षम है। मैंने पहले से ही समाधान खोजने के लिए बहुत समय की जांच की है, लेकिन परिणाम की अपेक्षा नहीं थी।
मेरे वर्तमान परियोजना: http://cl.ly/3q1f2t1O2Y3j
क्या आपने एबीएस से टुकड़े उदाहरण परियोजना के अंदर "टैब और पेजर" उदाहरण देखा है? –