如何在另一个活动中使用一个活动中的方法?

时间:2019-02-11 01:45:20

标签: java android

我想在另一个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

3 个答案:

答案 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()