2013-05-16 8 views
11

पर टैब के साथ एक साथ प्रवाह मैं subitems के बीच स्वाइप करने की क्षमता सहित मेरी android-आवेदन के लिए निम्न लेआउट (टैबलेट के लिए ऊपरी लेआउट, स्मार्ट फ़ोन के लिए कम लेआउट) हासिल करना चाहते हैं: Application Layout on Tablet (upper) and on Smartphone (lower)का उपयोग कैसे करें मास्टर/विस्तार एंड्रॉयड

इसलिए मैंने एक्लिप्स के साथ एक मास्टर/विस्तार-प्रवाह गतिविधि बनाई है, जो ठीक काम करता है। टैब के लिए मैंने समर्थन-पुस्तकालय नमूने (<sdk>/extras/android/support/v4/samples/) पर एक नज़र डाली है, जहां एक सुंदर उदाहरण दिया गया है (FragmentTabsPager.java), जो FragmentActivity वर्ग को बढ़ाता है और ViewPager और TabHost -Widget का उपयोग करता है।

मेरा विचार दोनों उदाहरणों को एक एप्लिकेशन में जोड़ना था, इसलिए टैबपेज को गतिविधि के रूप में उपयोग करने के बजाय, मैं इसे फ्रैगमेंट के रूप में उपयोग करना चाहता हूं। एक स्मार्टफोन पर यह अच्छा काम करता है, लेकिन टैबलेट पर यह केवल एक बार काम करता है (जिसका अर्थ है कि पहली बार शुरू होने पर, सामग्री सही ढंग से लोड हो जाती है, लेकिन जैसे ही मैं बाएं सूची में किसी अन्य आइटम पर क्लिक करता हूं, कोई और सामग्री लोड नहीं होती है)। अधिक सटीक होने के लिए: टैब लोड होते हैं और सही लेबल होते हैं, लेकिन टैब के सामग्री-क्षेत्र में दिखाया जाने वाला सामग्री वहां नहीं है, हालांकि आप टैब के बीच स्वाइप कर सकते हैं, जैसे कि सामग्री वहां थी।

मेरे प्रश्न हैं:

  • इस दृष्टिकोण सार्थक है (टैब के साथ मास्टर/विस्तार गठबंधन करने के लिए)? या मैं एक पूरी तरह से अलग दृष्टिकोण का उपयोग करना चाहिए?
  • क्या आप जानते हैं कि समस्या को कैसे ठीक किया जाए, सामग्री ठीक से लोड नहीं हो रही है?

इसे देखना आसान बनाने के लिए, मैंने इस विचार के साथ स्क्रैच से डेमो-ऐप बनाया है, जिसे https://github.com/apacha/MasterDetail_And_Tabs से डाउनलोड किया जा सकता है।

Stackoverflow पर संबंधित पोस्ट कि समस्या का समाधान नहीं: ViewPager PagerAdapter not updating the View,

Edit1: मैं http://developer.android.com/reference/android/support/v4/app/FragmentTabHost.html के बारे में सीखा और Android FragmentTabHost - Not fully baked yet? पाया है। इन संकेतों के साथ मैं यह लगभग चल पाने में कामयाब रहे, लेकिन अब मैं एक काम संस्करण है जो स्वाइप-सहायता प्रदान नहीं करता के बीच चुना जा सकता है (अगर मैं tabHost के लिए सीधे टैब्स जोड़ें:

FragmentTabHost mTabHost = new FragmentTabHost(); 
// Add directly to tab-host 
mTabHost.addTab(mTabHost.newTabSpec("simple1").setIndicator("Simple1"), CountingFragment.class, b); 
एक गाड़ी swipe- की

कार्यान्वयन अगर मैं इसे जोड़ सकते हैं और FragmentPagerAdapter

FragmentTabHost mTabHost = new FragmentTabHost(); 
ViewPager mViewPager = (ViewPager) rootView.findViewById(R.id.pager); 
TabsAdapter mTabsAdapter = new TabsAdapter(getActivity(), mTabHost, mViewPager); 
// Add to tab-host-adapter 
mTabsAdapter.addTab(mTabHost.newTabSpec("simple1").setIndicator("Simple1"), CountingFragment.class, b); 

मैं भंडार उपर्युक्त सभी परिवर्तनों को प्रतिबद्ध किया है का उपयोग करें।

+0

क्या आपने इस समस्या को हल किया?मैं वही संरचना चाहता हूं जिसका आपने उल्लेख किया था, और दुर्भाग्यवश – AlvaroSantisteban

+0

समान दृष्टिकोण लेने के बारे में सोच रहा था। लेकिन यदि आप इसे प्राप्त करते हैं और चलते हैं, तो यह बहुत अच्छा होगा, अगर आप भविष्य में आने वाले आगंतुकों के लिए उपरोक्त भंडार में समाधान जोड़ सकते हैं जो एक ही समस्या का सामना करते हैं (पुल-अनुरोध बनाएं)। –

उत्तर

1

मैं यहाँ https://github.com/ycagri/MasterSlave में सरल गुरु-दास डिजाइन लागू किया है।

+०१२३५१६४१०६१

मैंने इसे सार्वजनिक रिपो में रखा था। यदि आप कुछ और विशेषताओं के साथ खेलना और जोड़ना चाहते हैं, तो कांटे से मुक्त महसूस करें। सहेजे गए इंस्टेंसस्टेट को अभिविन्यास परिवर्तनों के लिए कार्यान्वित किया जा सकता है।

असल में, प्रोजेक्ट में लेआउट और लेआउट-sw600dp-land फ़ोल्डर्स के अंदर मुख्य गतिविधि के लिए दो लेआउट हैं। टैबलेट परिदृश्य में, लेआउट के अंदर परिभाषित टुकड़े। अन्यथा, टुकड़े प्रबंधक का उपयोग करके टुकड़े जोड़े गए। यदि आप लेआउट से दास टुकड़ा पा सकते हैं, तो आप एक लैंडस्केप मोड के साथ टैबलेट का उपयोग कर रहे हैं।

उम्मीद है कि यह मदद करता है ...

संबंधित मुद्दे