我对启动新活动有疑问。归结为此。 我在视图上有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,我可以响应被点击的假标签(图像)退出相机活动。退出时,选项卡应更新,以便您返回。任何建议?
谢谢,
答案 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;
}
}
}