2 yiranwujixian yiranwujixian 于 2012.10.25 10:59 提问

Android:捕获一个activity的返回

关于启动一个新的activity我遇到了一个问题。主要的问题就是,在一个视图上我有三个tab
A) 包含gMap activity
B) camera activity
C)一些随机的文本字段
要求就是这个应用程序要在肖像模式下运行。
除了Camera Preview Surface (B),所有的三个tab都正常。它旋转了90度。唯一的方法是把应用程序设置成横屏显示模式,移除所有的标签。但是这样是非常不切实际的。
我的解决方案就是:代替
我的camera activity和一个空的常规activity,除了

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

这将启动我的CameraActivity。而且很正常。我必须做一个包含3个图片的线性布局使它看起来像真正的tab,所以我可以试着模拟操作系统的tab,旋转屏幕成横屏然后保持视觉效果作为图像。用户可以点击其中的一个图像(按钮)来显示下一个tab。这是我的想法。它应该在一个tab中退出我的‘camera activity’,返回到‘blank activity’,它应该解释为从我的image中单击desiered tab。

最主要的就是,当它返回时,它在一个tab下返回一个空白(黑色)页面(因为它是空的)。我怎么能够捕获调用activity的返回这个页面的返回事件,然后看看做了什么动作?
当点击退出camera activity时,我可以设置一个点击的监听事件以便可以对假tab(图像)被点击做出会用。一旦退出,tab应该更新以便你来返回。有什么建议么?
谢谢。

1个回答

Sueyexin
Sueyexin   2012.10.25 13:32
已采纳

我只专注于回答怎么解决你的这个很紧急的问题,所以答案也你想要的。
捕获在另外一个activity中的一个activity的动作需要三个步骤。
加载第二个activity(你的‘camera activity’)作为一个子activity,用startActivityForResult而不是startActivity。

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

在这个子activity(camera activity)中,当你返回到父app时用额外的bundle,你需要创建一个新的包含索引tab的intent来显示,而不仅仅是当一个用户点击不同的tab图片的时候关闭activity。在关闭camera activity结束之前传递它到父调用setResult。

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

最后一步是在调用activity的时候,重写onActivityResult来监听camera activity的回调。从返回的Intent获得额外的来决定你想要显示的索引tab

@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; 
    } 
  } 
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!