Android:捕获活动的返回

Chr*_*pix 81 android exit android-intent android-activity

我对启动新活动有疑问.归结为此.我在视图上有3个选项卡

A) contains gMap activity
 B) camera activity
 C) some random text fields.
Run Code Online (Sandbox Code Playgroud)

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

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

我的解决方案是:替换

我的相机活动有一个空的常规活动,除了

Intent i = new Intent(this,CameraActivity.class);
    startActivity(i);
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢,

Ret*_*ier 158

我将专注于回答如何解决您的workround,以便它按照您的意愿行事.

捕获在另一个Activity中执行的操作需要三个步骤.

使用startActivityForResult而不是启动辅助活动(您的"相机活动")作为子活动startActivity.

Intent i = new Intent(this,CameraActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);
Run Code Online (Sandbox Code Playgroud)

在子活动(相机活动)内,而不是在用户单击不同的选项卡图像时关闭活动,您需要创建一个新的Intent并包含当您使用extras包返回到父应用程序时显示的选项卡的索引.setResult在调用finish关闭相机Activity 之前将其传递回父调用.

resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();
Run Code Online (Sandbox Code Playgroud)

最后一步是在调用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; 
    } 
  } 
} 
Run Code Online (Sandbox Code Playgroud)

  • 为什么要打开requestCode然后检查requestCode == RESULT_OK?编辑:没关系,我看到requestCode/resultCode的区别. (3认同)