我想在另一个Activity中使用方法onImageFromCameraClick
,但是当我尝试从另一个Activity中使用它时,会导致以下错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'android.content.pm.PackageManager android.content.Context.getPackageManager()'
如何在其他活动中使用该方法?
方法onImageFromCameraClick()
:
public void onImageFromCameraClick() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try { photoFile = createImageFile();
} catch (IOException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG);
}
if (photoFile != null) {
Uri photoUri = FileProvider.getUriForFile(this,
getApplicationContext().getPackageName() + ".fileprovider", photoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
} // inner if end
} // outer if end
} // onImageFromCameraClick END
OtherActivity :
case "cameraStart":
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
FaceDetectionActivity fm = new FaceDetectionActivity();
fm.onImageFromCameraClick();
} }, 0);
break; }
break;
// Code end
答案 0 :(得分:0)
如果我正确理解了您的问题,则可以尝试使用包含Context
的主类的onImageFromCameraClick()
来初始化对其他Activity
中主类的引用,例如例如:
MainActivity main = (MainActivity) context;
main.onImageFromCameraClick();
您可以通过将context
的实例传递到其他活动中来从主类中获取this
。
答案 1 :(得分:0)
这是因为您的FaceDetectionActivity是由 new 创建的。 我为您准备了这个
public void onImageFromCameraClick() {
...
getApplicationContext().getPackageManager()
...
}
答案 2 :(得分:0)
下面是不可能的。
FaceDetectionActivity fm = new FaceDetectionActivity();
fm.onImageFromCameraClick();
在提出解决方案之前,建议您先阅读Android。
现在的解决方案是将onImageFromCameraClick()
移至实用程序类,并将Context作为onImageFromCameraClick(Context context){}
传递给它。使用此上下文代替getApplicationContext()