拍摄的结果对话框碎片无法工作

3

我在通过FragmentDialog执行Android文件上传时遇到了问题。在测试按钮之前,我编写了Activity等来进行测试,一切都正常。但是,自从把它放在对话框片段下面后,就什么也没有发生:

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



        }

    }



}

我是说当我点击时什么都不起作用,它不会发送任何东西,也没有反应。 - theo theo
当我在菜单中点击uploadFile时,什么也没有发生。 - theo theo
你展示的所有代码似乎都是有效的。但我们需要帮助你的部分并不在其中。例如,你如何启动DialogFragment?从哪个Activity中调用什么方法?请帮助我们理清这些问题! - Entreco
1个回答

6

你是对的,什么都没有发生。 Activity有一个方法onActivityResult,而Fragment也有一个。这可能会让人感到困惑,为了进展,请尝试通过调用 Activity 上下文来使用它:

getActivity().startActivityForResult(Intent.createChooser(gal, "Select Picture"), SELECT_IMAGE);

通过这种方式,创建您的UploadF的Activity将接收到结果。因此,您需要将onActivityResult移动到您的Activity中:

public class YourActivity extends Activity {
    ...
    public void onActivityResult(int requestCode, int resultCode, Intent data){}
    ...
}

将功能放在UploadF之外并放在其父Activity中。 如果这样做不起作用,请在DialogFragment中搜索startActivityForResult。


你好,但是,由于我有很多对象要处理结果,所以如何从活动中获取片段?(我也面临同样的情况) - Totalys
1
在 Activity 中,使用 getFragmentManager().findFragmentById() 或 getFragmentManager().findFragmentByTag()。 - Entreco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接