2011-04-27 57 views
0

我想了解如何使用意图在选项卡之间切换。使用意图在Android选项卡之间切换

对我来说,我使用了两个标签:

Resources res = getResources(); 
TabHost tabHost = getTabHost(); 
TabHost.TabSpec spec; 

// Capture tab 
spec = tabHost.newTabSpec("capture").setIndicator(null, 
    res.getDrawable(R.drawable.ic_tab_capture)) 
    .setContent(new Intent(this,CaptureActivity.class)); 
tabHost.addTab(spec); 

// Upload tab 
spec = tabHost.newTabSpec("upload").setIndicator(null, 
    res.getDrawable(R.drawable.ic_tab_capture)) 
    .setContent(new Intent(this,ImageUpload.class)); 
tabHost.addTab(spec); 

为了简化我的目标,我的CaptureActivity.java包括下面的代码:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.capture); 
    Intent intent = new Intent(this, ImageUpload.class); 
    startActivityForResult(intent, 0); 
} 

我很期待是,该应用程序应该立即切换到第二个标签(ImageUpload活动),它工作正常,但标签本身消失。我将ImageUpload活动作为独立页面,而不是在选项卡本身内。

有什么想法发生了什么错?

+0

ImageUpload活动不会被强制存在于选项卡中。如果您通过Intent进行切换,则不会启动TabActivity上的选项卡,而是单独启动它。考虑其他机制在你的标签之间切换,如[this](http://stackoverflow.com/questions/5430759/tab-navigation-android/5430970#5430970)之一。 – FrVaBe 2011-04-27 13:12:51

+0

啊,好的。凉。上述方式工作正常。我改变了我的计划:事实上CaptureActivity将我重定向到非标签的ImageUpload似乎适合我的GUI计划。但是现在我遇到了下一个麻烦;-)我怎样才能将非标签式活动重定向到标签?在我的情况下,从ImageUpload到CaptureActivity? – ctp 2011-04-27 13:27:27

+0

如果您来自Tab,只需在您的非选项卡式活动中调用[finish()](http://developer.android.com/reference/android/app/Activity.html#finish%28%29)即可取回。 – FrVaBe 2011-04-27 13:50:20

回答

1

首先调用射击ImageUpload.java只激发ImageUpload.class,但是当然tabhost会消失。

你需要火,你加入你的两个tabHost您的MainActivity-TabActivity

1.ImageUpload

2.CaptureActivity

,这将维持您的TabLayout

通话像这样的意图


Intent i=new Intent(getApplicationContext(),MainActivity.class)//which is your mainActivity-Launcher 
i.addFlags(Intent.FLAG_ACTIVITY_BRING_TO_FRONT); 
startActivity(i);//will bring MainACtivity to Front 

现在的主要活动是已经内部MainActivity

运行,所以指针直接进入onNewIntent()主要活动


覆盖内onNewIntent()========= ============================

public class MainActivity extends TabActivty 
{ 
pubilc static TabHost tabhost; 
public void onCreate() 
{ 
    //where you added your two tab spec 
    //added them 
} 
public void onNewIntent(intent) 
{ 
    super.onNewIntent(intent); 
    tabHost.setCurrentTab(1);//1-depends where you want to switch-tabIndexno, I assume Upload is at 2nd position (so "1") 
    Activity currentActivity=getCurrentActivity(); 
      if(currentActivity instanceof Upload) 
      { 
       ((upload)currentActivity).onCreate();//watever method you want to call 
      } 
    } 

} 
0

在创建tabhost的父活动类中,我实现了泰德类似下面的方法:

public void switchTab(int tab){ 
     tabHost.setCurrentTab(tab); 
} 

里面的标签,我想能够在内部切换为我创造了下面的方法的另一个选项卡:

public void switchTabInActivity(int indexTabToSwitchTo){ 
     YOURTABHOSTACTIVITY ParentActivity; 
     ParentActivity = (YOURTABHOSTACTIVITY) this.getParent(); 
     ParentActivity.switchTab(indexTabToSwitchTo); 
} 

如果你想一个这个代码很好的例子,你可以看看我的MintTrack项目herehere

相关问题