繁体   English   中英

Android在选项卡中的嵌套活动中使用startActivityForResult。

[英]Android Use startActivityForResult from a nested activity in a tab.

我正在编写一个应用程序,该应用程序由在tabhost中创建的几个标签组成,并具有:

intent = new Intent().setClass(this, Home.class);
    spec = tabHost.newTabSpec("Home").setIndicator("Home",
                      res.getDrawable(R.drawable.home))
                  .setContent(intent);
    tabHost.addTab(spec);

在有问题的选项卡中,我正在使用一个ActivityGroup更改为选项卡中的其他活动:

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);

从这些活动之一中,我需要拍照,并且尝试使用以下设备在设备上使用默认的相机应用程序:

//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);

这样可以正确启动相机应用程序,但是在拍照后不会进入onActivityResult方法。 我尝试将此方法放置在选项卡链的每个类中,并且没有在其中任何一个中输入代码。

我注意到之前在如何在TabHost的tab子项中启动startactivityforresult时曾问过这个问题但唯一可能有用的答案是重定向到如何从TabHost Activity返回结果(startActivityForResult)? 这是一个关于使用基本Activity中的startActivityForResult启动tabActivity而不是从tabActivity中启动Activity的问题,因此它没有用。

我还不断看到人们说,当您使用ActivityGroup时,这是行不通的,但是没有人提出其他建议。

任何帮助,将不胜感激。

好的,我能够找到解决该问题的方法。

首先,我创建了另一个活动,该活动使用称为结果控制器的基本startActivity()调用开始。 这不会将任何数据传递回选项卡式活动,这意味着您不必担心其前进的方向。

其次,我创建了一个简单的静态数据类,称为DataConnector。 ResultController将获取DataConnector的实例并在其中插入数据

然后,在原始活动中(在选项卡中),我实现了onWindowFocusChanged方法来确定用户何时返回它。 我得到了DataConnector的实例,并能够将所需的数据提取到那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM