如何使用另一个Activity中的一个Activity的方法?

问题描述 投票:1回答:3

我想在另一个Activity中使用我的方法onImageFromCameraClick,但是当我尝试从我的其他Activity中使用它时,它会导致以下错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'android.content.pm.PackageManager android.content.Context.getPackageManager()'

如何在另一个Activity中使用该方法?

方法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
java android
3个回答
0
投票

如果我正确理解你的问题,你可以尝试使用包含Context的主类的onImageFromCameraClick()来初始化对其他Activity中主类的引用,例如:

MainActivity main = (MainActivity) context;
main.onImageFromCameraClick();

你可以通过将context的一个实例传递给你的其他活动来从你的主类获得this


0
投票

我这是因为你的FaceDetectionActivity是由new创建的。我得到了这个:

public void onImageFromCameraClick() {
...
    getApplicationContext().getPackageManager()
...
}

0
投票

以下是不可能的。

FaceDetectionActivity fm = new FaceDetectionActivity();  
fm.onImageFromCameraClick(); 

在给出解决方案之前,我建议你先阅读Android。

现在的解决方案是将onImageFromCameraClick()移动到实用程序类,并将Context作为onImageFromCameraClick(Context context){}传递给它。使用此上下文而不是getApplicationContext()

© www.soinside.com 2019 - 2024. All rights reserved.