Android 从选项卡中的嵌套 Activity 使用 startActivityForResult。

标签 android tabs camera android-intent

我正在编写一个应用程序,该应用程序由在标签主机中创建的多个标签组成:

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/

相关文章:

android - getPreferences 总是返回默认值

android - 使用 Appcelerator Titanium 开发移动应用程序

java - PrimeFaces 3.0 : How to change tab focus with `<p:tabView>`

java - 如何为 JTabbedPane 中的选项卡设置准确的样式?

JavaFX:TabPane 上下文菜单,取决于所选选项卡

javascript - html5 相机 APi 不工作,屏幕上显示带有相机禁令标志的灰色框?

android - V4L2 驱动程序破坏了 Android OMAP5432 上 4 个 USB 摄像头的缓冲区

Java Android - 在最近滑动后关闭应用程序(通知)

android - (支持)MapFragment 生命周期调用

swift - 使用相机向 UIPageViewController 添加多个图像