2010-10-06 6 views
19

के भीतर गतिविधि को कैसे बदलें: मेरे पास टैबएक्टिविटी है उदा। तीन टैब, टैबए, टैबबी, टैबसी।एंड्रॉइड। एक टैब

टैबसी की गतिविधि (ACT_C_1) में एक बटन है। तो यदि उपयोगकर्ता उस बटन पर क्लिक करता है, तो टैबसी में एक और गतिविधि (ACT_C_2) होनी चाहिए।

मैं आपको किसी भी सुझाव/या विचारों के लिए अग्रिम धन्यवाद देता हूं।

मुर

युपीडी:

यहाँ मेरी कोड है

तीन क्रियाएँ साथ TabActivity:

public class TabScreen extends TabActivity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.tab_menu); 

     TabHost tabHost = getTabHost(); // The activity TabHost 
     TabHost.TabSpec spec; // Resusable TabSpec for each tab 
     Intent intent; // Reusable Intent for each tab 

     intent = new Intent().setClass(this, SecondActivity.class); 

     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("tab_1").setIndicator("Tab1",null).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, ThirdActivity.class); 
     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("tab_2").setIndicator("Tab2",null).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, FourthActivity.class); 
     spec = tabHost.newTabSpec("tab_3").setIndicator("Tab3",null).setContent(intent); 
     tabHost.addTab(spec); 
    } 

} 

गतिविधि 'Act_C_1' या FourthActivity.java:

public class FourthActivity extends Activity implements OnClickListener 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fourth); 

     Button BtnWeiter = (Button)findViewById(R.id.BtnWeiter); 
     BtnWeiter.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) 
    {      
     // I also tried to use LocalActivityManager 
     // TabActivity parentTabActivity = (TabActivity) getParent();    
     // LocalActivityManager manager = parentTabActivity.getLocalActivityManager(); 
     // manager.destroyActivity("tab_3", true); 
     // manager.startActivity("tab_3", new Intent(this, FourthActivity.class)); 
     finish(); 
     startActivity(new Intent(this, FourthActivity.class));    
    }   
} 
+1

इस लिंक की जाँच करें: [एंड्रॉयड: कैसे TabActivity की एक एकल टैब के अंतर्गत कई गतिविधियों के लिए] (http://gamma-point.com/content/android-how-have-multiple-activities-under -सिंगल-टैब-सारणीयता) – Ian

उत्तर

-2

बटन

के लिए onClick ईवेंट संभाल

खत्म() गतिविधि startActivity विधि जोड़ें एक और गतिविधि शुरू करने के लिए।

धन्यवाद

+0

अच्छा सुझाव है, लेकिन यह कम से कम मेरे द्वारा TabActivity द्वारा काम नहीं करता है। – Tima

+0

हाय कृपया अपना कोड स्निपेट पोस्ट करें ... मैं इसे संपादित करने का प्रयास करूंगा। –

+0

मैंने अपने कोड का महत्वपूर्ण हिस्सा शामिल किया। 'काम नहीं करता' सही नहीं है, लेकिन अगर मैं इसे इस तरह से करता हूं, तो टैब गतिविधि समाप्त हो जाएगी। मैं क्या चाहता हूं, कि टैबैक्टिविटी के भीतर सिर्फ एक गतिविधि समाप्त हो जाएगी और दूसरा टैब के भीतर शुरू होगा। – Tima

-1

बस सभी टैब के लिए इस जोड़ें:

yourTabHost.getChildAt(0).setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     getTabHost().setCurrentTab(0); 
    } 
}); 
24

टैब में क्रियाएँ निम्नलिखित तरीके से बदला जा सकता है।

  1. हम एक टैब मेजबान में है, गतिविधि (जैसे एक सूची), जहाँ से हम (क्लिक किया आइटम का विवरण कहते हैं) अगले गतिविधि के लिए जाने की जरूरत है के तहत:

    पहले हमें प्रवाह को समझें एक ही टैब इसके लिए हम गतिविधि को बदलने की अवधारणा का उपयोग कर सकते हैं। यह भी जानने के लिए कि टैब का चयन किया गया है और अन्य यह जानने के लिए कि अब विवरण दिखाए जा रहे हैं

  2. जब हम वापस दबाते हैं तो हमें उसी टैब के अंतर्गत पिछली गतिविधि मिलनी चाहिए। इसके लिए गतिविधि को फिर से बदलने के बजाय हम चयनित टैब के लिए विशेष ध्वज का उपयोग करते समय टैब को रीफ्रेश कर सकते हैं। इसके अलावा, अगर शो जानकारी के लिए झंडा सच है कि हम एक ही टैब में सूची जायेंगे वरना हम tabwidget (onBackPressed की सामान्य उपयोग) से पहले गतिविधि जाना होगा

कोड इस प्रकार किया जा सकता है ..

  1. सूची से विवरण के लिए जाने के लिए ...

(यह onClickListener में हो सकता है)

private OnClickListener textListener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Constants.SHOW_DETAILS = true; 
     Intent intent = new Intent(context, DetailsActivity.class); 
     replaceContentView("activity3", intent); 
     } 
}; 

public void replaceContentView(String id, Intent newIntent) { 
    View view = ((ActivityGroup) context) 
      .getLocalActivityManager() 
      .startActivity(id, 
        newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) 
      .getDecorView(); 
    ((Activity) context).setContentView(view); 

} 
  1. जब वापस दबाया किया जाता है हम टैब के अंतर्गत गतिविधि में से प्रत्येक में BackPressed पर ओवरराइड विवरण से फिर से सूची में जाने के स्क्रीन

    @Override 
        public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    if (MathHelper.SHOW_DETAILS) { 
        Log.e("back", "pressed accepted"); 
        Constants.LIST_ACTIVITY = 1; 
        Constants.SHOW_DETAILS = false; 
        Intent intent = new Intent(this, Tab_widget.class); 
        startActivity(intent); 
        finish(); 
        } 
    } 
    

यहाँ सबसे महत्वपूर्ण हिस्सा ०१२३५१६४१०६१ हैConstants.LIST_ACTIVITY = 1; यह इंगित करता है कि हम कौन से टैब में हैं। इसलिए संबंधित गतिविधियों का मूल्य 0,1,2 ... आदि

टैब गतिविधि को रीफ्रेश होने पर सही सूची (सक्रियता) लोड करने के लिए हमें इसे शामिल करना होगा TabWidget onCreate में टैब के निर्माण के बाद

tabHost.setCurrentTab(Constants.LIST_ACTIVITY); 
+2

+1, बस एक नोटिस - उपरोक्त 'संदर्भ' कंटेनर (टैबएक्टिविटी) के लिए निहित गतिविधि को संदर्भित करता है। ओह और मुझे आश्चर्य है कि क्यों एंड्रॉइड इरादों का डिज़ाइन नहीं है और इसके बजाय Constants.LIST_ACTIVITY का उपयोग करें .. – kellogs

+0

या सही संदर्भ में टैब शामिल निहित गतिविधियों को संदर्भित करता है। –

+0

मैं असहमत हूं, संदर्भ * है * टैबएक्टिविटी, अन्यथा आप इसे एक गतिविधि समूह में नहीं डाल सकते हैं। –

0

बस आवश्यक टैब के लिए एक गतिविधि को बदलने के लिए Intent.FLAG_ACTIVITY_CLEAR_TOP ध्वज का उपयोग करें।

intent = new Intent().setClass(this, YourActivity.class); 
spec = tabHost.newTabSpec("tab1").setIndicator("Tab1",null) 
     .setContent(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
tabHost.addTab(spec); 
संबंधित मुद्दे