onActivityResult DialogFragment不起作用

the*_*heo 3 android dialog android-intent

我有一个问题,通过fragmentDialog.Befire在android中执行fileupload来测试我做的活动按钮来测试它,evrything工作正常,但因为我把它放在dilogfragment下没有任何作用:

public class UploadF extends DialogFragment{

    ....

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {


    gallery_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent gal = new Intent();
            gal.setType("image/*");
            gal.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(gal, "Select Picture"), SELECT_IMAGE);

        }

    });




    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult( requestCode,  resultCode,  data);
        if (resultCode == Activity.RESULT_OK) {
            if (requestCode == SELECT_IMAGE) {
                ....

                if ( selectedImagePath != null ) {
                    UploadFileI task = new UploadFileI( getActivity());
                    task.execute( url );
                }
            }



        }

    }



}
Run Code Online (Sandbox Code Playgroud)

Ent*_*eco 6

你是对的,没有任何事情发生.Activity有一种方法onActivityResult,也有一种方法Fragment.这可能会令人困惑,为了进步,请尝试通过调用以下方法来使用Activity上下文:

getActivity().startActivityForResult(Intent.createChooser(gal, "Select Picture"), SELECT_IMAGE);
Run Code Online (Sandbox Code Playgroud)

这样,创建UploadF的Activity将收到结果.所以你必须转移onActivityResult到你的Activity:

public class YourActivity extends Activity {
    ...
    public void onActivityResult(int requestCode, int resultCode, Intent data){}
    ...
}
Run Code Online (Sandbox Code Playgroud)

在UploadF之外和父Activity之内的函数.如果这不起作用,请在DialogFragment中搜索startActivityForResult