Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OnActivityResult在片段内不起作用。如何在我的代码中修复此问题?_Java_Android_Onactivityresult - Fatal编程技术网

Java OnActivityResult在片段内不起作用。如何在我的代码中修复此问题?

Java OnActivityResult在片段内不起作用。如何在我的代码中修复此问题?,java,android,onactivityresult,Java,Android,Onactivityresult,因此,我正在编写这个应用程序,它需要从手机中拾取个人资料图片,裁剪、压缩并将图片保存到内存中的自定义位置,还需要将压缩后的位图设置为圆形图像视图中的预览。所有这些都在一个碎片里。但是我的onActivityResult在片段中根本没有被调用 这是我的密码: ViewPagerAdapter.class 配置碎片2.类 和MainActivity.class onActivityResult代码在正常的活动中完美地工作,但在这个片段中却没有。我该如何解决我的问题?谢谢大家! 我认为问题在于: f

因此,我正在编写这个应用程序,它需要从手机中拾取个人资料图片,裁剪、压缩并将图片保存到内存中的自定义位置,还需要将压缩后的位图设置为圆形图像视图中的预览。所有这些都在一个碎片里。但是我的onActivityResult在片段中根本没有被调用

这是我的密码:

ViewPagerAdapter.class

配置碎片2.类

MainActivity.class


onActivityResult代码在正常的活动中完美地工作,但在这个片段中却没有。我该如何解决我的问题?谢谢大家!

我认为问题在于:

 firstly you need to add tag to fragment ConfigurationFragment2 when initilaize it the edit onActivityResult in your activity like this :

@Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_configuration);
            setTheme(R.style.AppThemeBlueStatusDarkText);
            objectInstance();

            viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
            viewPager.setAdapter(viewPagerAdapter);
            viewPager.setSwipeable(false);
            viewPager.setCurrentItem(currentPage);
    }

     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            Fragment ConfigurationFragment2 = getSupportFragmentManager().findFragmentByTag("ConfigurationFragment2 Tag");
    switch (requestCode) {
                case  CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE:
    if (ConfigurationFragment2 != null)
                        ConfigurationFragment2.onActivityResult(requestCode, resultCode, data);
                    break;

    }

        }
下图显示了以下内容:

这意味着
start()
方法的
Activity
参数将用于启动CropImage活动,因此将是接收结果的地方。相反,您应该使用库公开的另一个
start()
方法:

这意味着您将使用以下代码:

public void chooseProfilePicture(){
    CropImage.activity().setGuidelines(CropImageView.Guidelines.ON).setAspectRatio(1,1).start(getActivity(), this);
}

现在,结果应该传递给您的片段。

问题在于这个奇怪的
CropImage
库。您必须使用
Fragment.startActivityForResult
,但该库可能正在使用
Activity.startActivityForResult
,因此它没有正确地转发到Fragment。该死,它就这么简单。我必须学习如何查看我使用的库的文档,但我认为这比这更复杂。非常感谢你,伙计,不用担心。狩猎快乐!
 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_configuration);
        setTheme(R.style.AppThemeBlueStatusDarkText);
        objectInstance();

        viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(viewPagerAdapter);
        viewPager.setSwipeable(false);
        viewPager.setCurrentItem(currentPage);
}

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    }
 firstly you need to add tag to fragment ConfigurationFragment2 when initilaize it the edit onActivityResult in your activity like this :

@Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_configuration);
            setTheme(R.style.AppThemeBlueStatusDarkText);
            objectInstance();

            viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
            viewPager.setAdapter(viewPagerAdapter);
            viewPager.setSwipeable(false);
            viewPager.setCurrentItem(currentPage);
    }

     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            Fragment ConfigurationFragment2 = getSupportFragmentManager().findFragmentByTag("ConfigurationFragment2 Tag");
    switch (requestCode) {
                case  CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE:
    if (ConfigurationFragment2 != null)
                        ConfigurationFragment2.onActivityResult(requestCode, resultCode, data);
                    break;

    }

        }
public void chooseProfilePicture(){
    CropImage.activity().setGuidelines(CropImageView.Guidelines.ON).setAspectRatio(1,1).start(getActivity());
}
public void start(@NonNull Activity activity) {
  mOptions.validate();
  activity.startActivityForResult(getIntent(activity), CROP_IMAGE_ACTIVITY_REQUEST_CODE);
}
public void start(@NonNull Context context, @NonNull Fragment fragment) {
  fragment.startActivityForResult(getIntent(context), CROP_IMAGE_ACTIVITY_REQUEST_CODE);
}
public void chooseProfilePicture(){
    CropImage.activity().setGuidelines(CropImageView.Guidelines.ON).setAspectRatio(1,1).start(getActivity(), this);
}