gpt4 book ai didi

android - 如何获取类的上下文

转载 作者:行者123 更新时间:2023-11-29 16:38:27 26 4
gpt4 key购买 nike

我有以下类(class),我尝试获取上下文以便将 Intent 发送到另一个 Activity 。

 public class CloudDocumentTextRecognitionProcessor
extends VisionProcessorBase<FirebaseVisionCloudText> {

public Context mContext;

private FirebaseVisionCloudDocumentTextDetector detector;

public CloudDocumentTextRecognitionProcessor() {
super();
detector = FirebaseVision.getInstance().getVisionCloudDocumentTextDetector();
}

public CloudDocumentTextRecognitionProcessor(Context context) {

this.mContext = context;

}

@Override
protected Task<FirebaseVisionCloudText> detectInImage(FirebaseVisionImage image) {

return detector.detectInImage(image);
}


@Override
protected void onSuccess(
@NonNull FirebaseVisionCloudText text,
@NonNull FrameMetadata frameMetadata,
@NonNull GraphicOverlay graphicOverlay) {

graphicOverlay.clear();

Intent i = new Intent(mContext, ResultActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("key", text.getText());
mContext.startActivity(i);


}


}

但是我在设置 Intent 的行中遇到错误:

“尝试在空对象引用上调用虚方法‘java.lang.String android.content.Context.getPackageName()’”

我还尝试了 MyApplication.getContext() 而不是 mContext,但没有结果。

有什么想法吗?

最佳答案

这个类没有继承任何有上下文的Android组件,所以你必须自己注入(inject)它。您必须使用将 Context 作为参数的构造函数实例化该类,并将其从 Activity 或其他具有应用程序上下文的上下文/访问权限的 Android 组件传入。

类似于(伪代码):

Class MyActivity
{
...
imageProcessor = new CloudDocumentTextRecognitionProcessor(this);
// or imageProcessor = new CloudDocumentTextRecognitionProcessor(this.getApplicationContext());
}

如何选择上下文?

  • 如果 CloudDocumentTextRecognitionProcessor 实例应该在应用的整个生命周期中存在,请使用 getApplicationContext()
  • 如果CloudDocumentTextRecognitionProcessor实例保证仅在 Activity 的生命周期内存在,请使用this

关于android - 如何获取类的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51967827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com