Android:捕获活动的返回

时间:2009-01-16 04:05:39

标签: android android-intent android-activity exit

我对启动新活动有疑问。归结为此。 我在视图上有3个标签

A) contains gMap activity
 B) camera activity
 C) some random text fields.

要求应用程序以纵向模式运行。

除了Camera Preview Surface(B)之外,所有3个标签都按预期工作。它旋转了90度。他们唯一的方法就是将应用程序设置为横向,这会抛出我所有的标签,并且几乎不可行。

我的解决方案是:替换

我的相机活动,其常规活动是空的,除了

Intent i = new Intent(this,CameraActivity.class);
    startActivity(i);

这将启动我的CameraActivity。这很好。我必须做一个线性布局并包含3个看起来像真正的标签的图像,所以我可以尝试模仿标签的操作,同时将屏幕旋转到横向并将视觉效果保持为纵向。 用户可以单击其中一个图像(按钮)以显示下一个选项卡。这是我的问题。它应退出我的“相机活动”,返回选项卡中的“空白活动”,应该将其解释为从我的图像中单击已删除的选项卡。

主要的是,当它返回时,它返回到选项卡下的空白(黑色)页面(因为它是'空')。如何将返回事件捕获回调用该活动的页面,然后查看它们执行了哪些操作?

我可以设置一个onclicklistener,我可以响应被点击的假标签(图像)退出相机活动。退出时,选项卡应更新,以便您返回。任何建议?

谢谢,

1 个答案:

答案 0 :(得分:158)

我将专注于回答如何解决你的工作环境,使其表现得如你所愿。

要捕获对另一个活动执行的操作,需要三个步骤。

使用startActivityForResult代替startActivity启动辅助活动(您的“相机活动”)作为子活动。

Intent i = new Intent(this,CameraActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);

在子活动(相机活动)中,您不需要在用户单击不同的选项卡图像时关闭活动,而是需要创建一个新的Intent并包含当您使用返回父应用程序时显示的选项卡的索引额外的捆绑。在致电setResult以关闭相机活动之前,将其传回父呼叫finish

resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

最后一步是在调用Activity中,覆盖onActivityResult以侦听来自相机Activity的回调。从返回的Intent中获取额外信息,以确定应显示的选项卡的索引。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {     
  super.onActivityResult(requestCode, resultCode, data); 
  switch(requestCode) { 
    case (STATIC_INTEGER_VALUE) : { 
      if (resultCode == Activity.RESULT_OK) { 
      int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
      // TODO Switch tabs using the index.
      } 
      break; 
    } 
  } 
}