2012-11-29 14 views
10

मैं एंड्रॉइड में वास्तव में नया हूं और मैं एक छोटी परियोजना को कार्यान्वित कर रहा हूं जिसमें मेरे पास एक ड्रूपल वेबसाइट से खबर है। यह ऐप 3 टैब के साथ है और प्रत्येक टैब में विशिष्ट सामग्री वाले लेखों की एक सूची है। लेखों की सूची लाइनव्यूआउट में व्यवस्थित टेक्स्टव्यू और छविदृश्यों द्वारा बनाई गई है। जब मैं शीर्षक पर क्लिक करता हूं, तो लेख विवरण के साथ खुलता है। उन लेखों को HTTP पोस्ट और व्यूजेसन मॉड्यूल के माध्यम से ड्रूपल साइट से लोड किया जाता है। टैब्स FragmentActivity और TabHost के साथ बनाए जाते हैं। सबकुछ ठीक है और यहां तक ​​ठीक काम करता है।बटन पर खंड टैब सामग्री को रीफ्रेश करने के लिए कैसे करें

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

मैं इस कोड के साथ प्रयास कर रहा था लेकिन कोई सफलता नहीं थी।

Button btn_refresh = (Button) findViewById(R.id.btn_refresh); 
     btn_refresh.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       String current_tab = mTabHost.getCurrentTabTag(); 
       if(current_tab.contains("POPULARE")){ 

        Fragment f; 
        f = new PopulareActivity(); 
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
        ft.replace(R.id.tot,f); 
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
        ft.commit(); 
       } 
       if(current_tab.contains("RECOMANDATE")){ 

        Fragment f; 
        f = new RecomandateActivity(); 
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
        ft.replace(R.id.tot,f); 
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
        ft.commit(); 
       } 

अधिक वास्तव में मैं मोबाइल डिवाइस के वापस बटन एप्लिकेशन, प्रेस Tab2 (tab2 से लेख की सूची दिखाने के लिए), प्रेस ताज़ा करें बटन, खुले एक लेख, प्रेस पर दर्ज करें और मुझे tab2 की सामग्री को दिखाने के। अब, मैं टैब 1 पर प्रवेश करता हूं (और टैब 1 से आलेखों की सूची दिखाता हूं), टैब 1 की सूची से एक लेख खोलें, मुझे दिखाएं कि मुझे क्या चाहिए, और मोबाइल से बैक बटन दबाएं। इस पल में टैब 2 सामग्री दिखायी गई है (आलेख फ़ॉर्म टैब 2 की सूची जहां से मैंने रीफ्रेश बटन दबाया था।)। मदद के लिए

  tv.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 

          Fragment f; 
          f = new DetaliiActivity(); 
          Bundle data = new Bundle(); 
          data.putInt("id", nid); 
          f.setArguments(data); 
          FragmentTransaction ft = getFragmentManager().beginTransaction(); 

          ft.replace(R.id.tot,f); 

          ft.addToBackStack(null); 
          ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
          ft.commit(); 
        } 
       }); 

धन्यवाद:

एक लेख मैं उपयोग के विवरण को खोलने के लिए!

उत्तर

6

एक टुकड़े की सामग्री को रीफ्रेश करने के लिए, आप टुकड़े का संदर्भ रख सकते हैं, और उस खंड में एक सार्वजनिक (उदाहरण के लिए) refresh() विधि को कॉल कर सकते हैं। उदाहरण:

public class ArticleTabFragmentActivity extends FragmentActivity{ 
    private PopulareFragment populareFragment; 
    private RecomandateFragment recomandateFragment; 

    <code> 

    private void bindView(){ 
    Button btn_refresh = (Button) findViewById(R.id.btn_refresh); 

    btn_refresh.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       String current_tab = mTabHost.getCurrentTabTag(); 
       if(current_tab.contains("POPULARE")){ 
        populareFragment.refresh(); 
       } else if(current_tab.contains("RECOMANDATE")){ 
        recomandateFragment.refresh(); 
       } 
    }); 
    } 



} 

public class PopulareFragment extends Fragment{ 

    public void refresh(){ 
    <refresh the contents of the fragment> 
    } 

} 

<Same for other fragment> 

अब जब आप टैब टुकड़ा बनाने के लिए, PupulareFragment की तरह, pupulareFragment उदाहरण चर टुकड़ा स्टोर करने के लिए इस्तेमाल करते हैं। तो यह क्लिक विधि पर रीफ्रेश बटन में उपलब्ध है।

इस तरह आप रीफ्रेश करते समय किसी भी नए टुकड़े को प्रतिस्थापित/निर्माण नहीं कर रहे हैं। तो लेख विवरण गतिविधि पर जाने के बाद टैब एक्टिविटी पर वापस जाकर, शायद ठीक काम करेगा।

+3

क्या आप रीफ्रेश विधि पर थोड़ा सा विस्तार कर सकते हैं? मैं इस बात पर अस्पष्ट नहीं हूं कि यह अभी भी – ChuckKelly

+0

खंड को रीफ्रेश करेगा, ताज़ा करने के तरीके में तत्वों/डेटा इत्यादि को ताज़ा करने के लिए कार्यों को शामिल किया जा सकता है। यह वास्तव में खंड के साथ कुछ भी नहीं करता है, लेकिन इसमें डेटा को अपडेट करने के लिए इसे फिर से बनाया जाना आवश्यक नहीं है। – NickL

+1

आप वर्तमान खंड ((सेक्शनपेगर एडाप्टर) mViewPager.getAdapter() के माध्यम से भी एक्सेस कर सकते हैं। GetItem (mViewPager.getCurrentItem())) – yesildal

-1
FragmentTabHost tabHost3 = (FragmentTabHost) findViewById(android.R.id.tabhost); 
String current_tab = tabHost3.getCurrentTabTag(); 
if (current_tab.equals("abc")) { 
    ClassFragment ni = (ClassFragment) getSupportFragmentManager().findFragmentByTag("abc"); 
    ni.refresh(); 
} 

इसे आज़माएं, टैब के नीचे मौजूद सभी चीज़ों को फिर से निष्पादित किया जाएगा।

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