Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用意图在Android选项卡之间切换_Android_Android Activity_Tabs_Android Intent - Fatal编程技术网

使用意图在Android选项卡之间切换

使用意图在Android选项卡之间切换,android,android-activity,tabs,android-intent,Android,Android Activity,Tabs,Android Intent,我希望了解如何使用intent在选项卡之间切换 在我的情况下,我使用两个选项卡: Resources res = getResources(); TabHost tabHost = getTabHost(); TabHost.TabSpec spec; // Capture tab spec = tabHost.newTabSpec("capture").setIndicator(null, res.getDrawable(R.drawable.ic_tab_capture)) .se

我希望了解如何使用intent在选项卡之间切换

在我的情况下,我使用两个选项卡:

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);
为了简化我的目标,my 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活动作为独立页面,而不是选项卡本身


知道哪里出了什么问题吗?

首先调用firing ImageUpload.java只会激发ImageUpload.class,但tabhost肯定会消失

您需要在添加两个tabHost的位置启动MainActivity选项卡Activity

1.图像上传

2.捕获活动

这将维持你的工作表

像这样称呼意图


现在主活动已经在运行,所以指针直接指向主活动内的onNewIntent()


在MainActivity中重写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
           }
  }

}

在创建tabhost的父活动类中,我实现了如下方法:

public void switchTab(int tab){
        tabHost.setCurrentTab(tab);
}
在我希望能够在内部切换到另一个选项卡的选项卡内,我创建了以下方法:

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

如果您想了解这段代码的一个很好的示例,可以查看我的MintTrack项目。

ImageUpload活动不强制存在于选项卡中。如果有意切换,则不会启动TabActivity上的选项卡,而是独立启动它。考虑其他机制在你的标签之间切换一个。检查我的答案在这个帖子:希望这有帮助!!啊,好的。酷。上面描述的方法很好用。我改变了我的计划:事实上CaptureActivity将我重定向到非选项卡式ImageUpload似乎很适合我的GUI计划。但现在我有下一个麻烦;-)如何将非选项卡式活动重定向到选项卡式活动?在我的例子中,从ImageUpload到CaptureActivity?如果您来自选项卡,只需调用您的非选项卡活动即可返回。
public void switchTabInActivity(int indexTabToSwitchTo){
        YOURTABHOSTACTIVITY ParentActivity;
        ParentActivity = (YOURTABHOSTACTIVITY) this.getParent();
        ParentActivity.switchTab(indexTabToSwitchTo);
}