Java &引用;尝试对空对象引用调用虚方法;尝试从activity子类启动TractivityForresult时

Java &引用;尝试对空对象引用调用虚方法;尝试从activity子类启动TractivityForresult时,java,android,Java,Android,我正在为一个应用程序编写一个插件,在这个应用程序中,我需要创建一个对话框窗口,允许用户拍照供以后使用。我无法访问应用程序的主活动以使用onActivityResult,因此我正在尝试使用onActivityResult创建一个活动子类,以调用startActivityForResu public class UserAddDialog { private AlertDialog dialog; private View dialogView; private Imag

我正在为一个应用程序编写一个插件,在这个应用程序中,我需要创建一个对话框窗口,允许用户拍照供以后使用。我无法访问应用程序的主活动以使用onActivityResult,因此我正在尝试使用onActivityResult创建一个活动子类,以调用startActivityForResu

public class UserAddDialog {

    private AlertDialog dialog;
    private View dialogView;

    private ImageView tempPhoto;
    private Context c;

    public UserAddDialog build(final Context context, LayoutInflater inflater) {
        c = context;
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        final Activity act = (Activity) context;
        builder.setTitle("Add person to TLS logbook");
        dialogView = inflater.inflate(R.layout.user_role_layout, null);
        builder.setView(dialogView);
        dialog = builder.create();

        tempPhoto = (ImageView) dialogView.findViewById(R.id.takenPic);
        Button takePicture = (Button) dialogView.findViewById(R.id.takePhoto);

        takePicture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final int REQUEST_IMAGE_CAPTURE = 1;

                Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if (takePictureIntent.resolveActivity(act.getPackageManager()) != null) {
                    PictureAct p = new PictureAct();
                    p.startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
                }

            }
        });


        return this;
    }

    public void show() {dialog.show();}

    class PictureAct extends Activity {

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
                Bundle extras = data.getExtras();
                Bitmap photo = (Bitmap) extras.get("data");
                tempPhoto.setImageBitmap(photo);
            }
        }
    }
}
我试图在空对象引用上调用虚拟方法“android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()”

在线
p.startActivityForResult(获取图片内容、请求图像捕获)


有什么想法吗?我还尝试创建一个活动,而不是创建一个对话框,但我需要在应用程序活动中使用生成的图片,而我无法从新活动中访问该图片。我还使用api 29,因此无法使用片段,因为它们已被弃用。

要启动活动或activityForResult from activity:

startActivityForResult( intent , code );
从片段:

getActivity().startActivityForResult( yourIntent , yourRequestCode);
其他地方:

Activity act = ( Activity ) context;
act.startActivityForResult( intent , code );

将p替换为活动上下文。PictureAct的上下文?我不知道你的意思。你能举个例子吗?getActivity对dialog类不可用,我不相信这会触发PicActivity的onActivityResult,使dialog
扩展DialogFragment
,或者用
act
替换getActivity,因为你已经在这里定义了
最终活动act=(活动)上下文Idk,如果可以的话。我没有试过。我现在正在成功地开始这项活动,但我现在的问题是,我无法在班上获得活动结果。我在将dialog类设置为dialogfragment时也遇到了问题,因为它在288年也被弃用。您需要使用
androidx.fragment.app.dialogfragment