2012-07-13 66 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); 
相关问题