2012-07-13 70 views
0

我有基於選項卡的應用程序。在一個選項卡中,我有擴展ListActivity的類。當觸發onClick時,我需要另一個活動,同時保持標籤欄。我想通過onClick轉移到另一個標籤,同時保持標籤欄。如何從意圖到另一個選項卡應用程序

此代碼的工作,但隱藏標籤欄:

Intent intent = new Intent(getApplicationContext(),SectionContentList.class); 

// put values to intent which will get in the LoginSuccess Activity 
Log.d("",appState.MainCategories.get(position).get("feedUrl")); 
intent.putExtra("FeedURL", appState.MainCategories.get(position).get("feedUrl")); 

// Start LoginSuccess Activity 
startActivity(intent); 

如何轉移到這個新的意圖,同時保持底部的標籤欄?

回答

0

您應該使用片段來共享許多活動之間的UI部分。

1

如果你已經實現了一個標籤欄,你有一個活動 - 我們稱之爲MyTabActivity - 它擴展了TabActivity。 本次活動的OnCreate(Bundle)方法,您設置標籤欄,首先檢索在XML中TabHost查看:

TabHost tabHost = (TabHost) findViewById(R.id.tabhost); 

要動態處理選項卡中選擇,你可以保持作爲一個靜態變量的引用TabHost:

public static final TabHost tabHost; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tabActivityLayout); 
    tabHost = (TabHost) findViewById(R.id.tabhost); 
    // ..... 
} 

然後,您可以從標籤活動的一個訪問TabHost並設置爲低於當前標籤:

MyTabActivity.tabHost.setCurrentTabByTag("the tag you affected to this activity"); 

OR

MyTabActivity.tabHost.setCurrentTabByTag("the id you may have affected to it"); 

編輯: 你影響影響標籤的TabHost如下當標籤:

TabHost.TabSpec tabSpec = tabHost.newTabSpec("The Tag").setIndicator(tabView).setContent(intent); 
tabHost.addTab(tabSpec); 
+0

可惜的是我有一個擴展ListActivity類,我需要在其項目中的一個點擊,以顯示與保存另一個活動標籤欄 – AMH 2012-07-13 21:41:21

+0

我沒有看到矛盾,您的ListActivity是標籤活動之一吧? 即,您在TabActivity的OnCreate()中執行了此操作: 'TabHost.TabSpec tabSpec = tabHost.newTabSpec(「Your ListActivity Tag」)。setIndicator(tabView).setContent(意圖啓動您的ListActivity); tabHost。addTab(tabSpec);' – 2012-07-16 16:55:12

+0

您可以在您的ListActivity中,在其 [protected void onListItemClick(ListView l,View v,int position,long id)method]中執行以下操作(http://developer.android.com/reference /android/app/ListActivity.html#onListItemClick(android.widget.ListView,%20android.view.View,%20int,%20long)) : 'MyTabActivity.tabHost.setCurrentTabByTag(「您影響到活動的標籤你想去「);' – 2012-07-16 16:59:01

2

我不得不作罷例如用於標籤活動管理 //必須有申報標籤活動的數量在那裏使用 package com.technosoft.Concina_Peru;

import android.app.TabActivity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.TabHost; 
import android.widget.TextView; 

import com.technosoft.FirstTab.FirstTab; 
import com.technosoft.FourthTab.FourthTab; 
import com.technosoft.SecondTab.SecondTab; 
import com.technosoft.ThirdTab.ThirdTab; 

public class ConcinaPeruTabbar extends TabActivity { 

    public static Context tabContext; 
    public static TabHost tabHost; 
    Context con; 
    public static String var = ""; 

    public static Concina_Database db; 

    private void setupTabHost() { 
     tabHost = (TabHost) findViewById(android.R.id.tabhost); 
     tabHost.setup(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.starttab); 
     tabContext = this; 
     con = this.getApplicationContext(); 
     db = new Concina_Database(con); 

     setupTabHost(); 
     setupTab(new TextView(this), "Inicio"); 
     setupTab(new TextView(this), "Recetas"); 
     setupTab(new TextView(this), "Favoritos"); 
     setupTab(new TextView(this), "Mas"); 

    } 



    private void setupTab(final View view, final String tag) { 
     View tabview = createTabView(tabHost.getContext(), tag); 
     if(tag.equals("Inicio")){ 

      tabHost.addTab((tabHost.newTabSpec("Inicio")).setIndicator(
        tabview).setContent(new Intent(this, FirstTab.class))); 
     } 
     if(tag.equals("Recetas")){ 

     tabHost.addTab((tabHost.newTabSpec("Recetas")).setIndicator(
       tabview).setContent(new Intent(this, SecondTab.class))); 

     } 
     if(tag.equals("Favoritos")){ 

      tabHost.addTab((tabHost.newTabSpec("Favoritos")).setIndicator(
       tabview).setContent(new Intent(this, ThirdTab.class))); 

     } 
     if(tag.equals("Mas")){ 

      tabHost.addTab((tabHost.newTabSpec("Mas")).setIndicator(
       tabview).setContent(new Intent(this, FourthTab.class))); 

     } 
    } 

    private static View createTabView(final Context context, final String text) { 
     View view = LayoutInflater.from(context) 
       .inflate(R.layout.tabs_bg, null); 
     TextView tv = (TextView) view.findViewById(R.id.tabsText); 

     ImageView iv = (ImageView) view.findViewById(R.id.imageView1); 
     if (text.equals("Inicio")) { 
      iv.setBackgroundResource(R.drawable.tab_bg_image); 
     } 
     if (text.equals("Recetas")) { 
      iv.setBackgroundResource(R.drawable.tab_bg_image1); 
     } 
     if (text.equals("Favoritos")) { 
      iv.setBackgroundResource(R.drawable.tab_bg_image2); 
     } 
     if (text.equals("Mas")) { 
      iv.setBackgroundResource(R.drawable.tab_bg_image3); 
     } 

     tv.setText(text); 
     return view; 
    } 
} 

//第一個選項卡活動定義這裏

public class FirstTab extends ActivityGroup{ 
    public static FirstTab group_FirstTab; 

    private ArrayList<View> history = new ArrayList<View>(); 
    ProgressDialog PD; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     group_FirstTab = this; 
     View view = getLocalActivityManager().startActivity("CitiesAct", new 
       Intent(FirstTab.this,Inicio.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView(); 
     replaceView(view); 
    } 
    public void replaceView(View view) { 

      history.add(view); 
      setContentView(view); 

     } 
    public void RemoveView(){ 
     history.clear(); 

    } 
    public void back(){ 
      if(history.size() > 1) { 
       history.remove(history.size()-1); 
       setContentView(history.get(history.size()-1)); 

      }else{ 
       finish(); 
      } 
     } 

    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {    
      if(keyCode == KeyEvent.KEYCODE_BACK){     
       group_FirstTab.back(); 
        return true; 
      } 
      return super.onKeyDown(keyCode, event); 
    } 


} 

類似的還有另一個選項卡活動.. 現在ü想要去的意圖一個標籤到另一個標籤活動到另一個活動標籤下面的代碼遵循

爲前想了0標籤活動1個標籤活動,則使用

tab activity Class tab_0{ 
    ConcinaPeruTabbar.tabHost.setCurrentTab(1); 
} 

如果u想要去一個標籤activty到simaar標籤activty然後用這個 查看視圖=

FirstTab.group_FirstTab.getLocalActivityManager().startActivity("CitiesAct", new   Intent(Inicio.this,Platos.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP).putExtra("platos", "Entradas")).getDecorView(); 
        FirstTab.group_FirstTab.replaceView(view); 
相關問題