我正在编写一个应用程序,该应用程序由在标签主机中创建的多个标签组成:
intent = new Intent().setClass(this, Home.class);
spec = tabHost.newTabSpec("Home").setIndicator("Home",
res.getDrawable(R.drawable.home))
.setContent(intent);
tabHost.addTab(spec);
在有问题的选项卡中,我使用 ActivityGroup 更改选项卡中的不同 Activity :
Intent intent = new Intent(Info1.this, Enroll2.class);
intent.putExtra("info", Info);
View newView = Group.group.getLocalActivityManager().startActivity("Info1", intent
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
Group.group.replaceView(newView);
我需要从这些 Activity 中的一个 Activity 中拍照,并且我正在尝试使用设备上的默认相机应用程序:
//define the file-name to save photo taken by Camera activity
String fileName = "picture" + Integer.toString(pictureCount);
//create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
//imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
imageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//create new Intent
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
这样可以正确启动相机app,但是拍照后没有进入onActivityResult方法。我已尝试将此方法放在选项卡链中的每个类中,但它不会在其中任何一个中输入代码。
我注意到之前在 How to startactivityforresult in tab child of TabHost 上有人问过这个问题但唯一可能有用的答案是重定向到 How to return a result (startActivityForResult) from a TabHost Activity?这是一个关于使用基本 Activity 中的 startActivityForResult 来启动 tabActivity 而不是从 tabActivity 中启动 Activity 的问题,因此没有用。
我也经常看到有人说当您使用 ActivityGroup 时这不起作用,但没有人建议如何去做。
如有任何帮助,我们将不胜感激。
最佳答案
好吧,我找到了解决这个问题的方法。
首先,我创建了另一个 Activity ,我开始使用基本的 startActivity() 调用,我称之为结果 Controller 。这不会将任何数据传回选项卡式 Activity ,这意味着您不必担心它的去向。
其次,我创建了一个简单的静态数据类,我称之为 DataConnector。 ResultController 将获取 DataConnector 的实例并在那里插入数据
然后,在原始 Activity 中(在选项卡中)我实现了 onWindowFocusChanged 方法来确定用户何时返回它。我获得了 DataConnector 的实例,并且能够从那里提取我需要的数据。
关于Android 从选项卡中的嵌套 Activity 使用 startActivityForResult。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865652/