Java 尝试调用虚拟方法';android.content.res.Resources$Theme android.content.Context.getTheme()';关于空对象引用

Java 尝试调用虚拟方法';android.content.res.Resources$Theme android.content.Context.getTheme()';关于空对象引用,java,android,opencv,nullpointerexception,Java,Android,Opencv,Nullpointerexception,我想在Android应用程序内的图像上运行一些OpenCv过滤器。 我犯了一个错误,似乎找不到其根源 堆栈跟踪: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference

我想在Android应用程序内的图像上运行一些OpenCv过滤器。 我犯了一个错误,似乎找不到其根源

堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference
                                                                          at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:222)
                                                                          at android.app.AlertDialog$Builder.<init>(AlertDialog.java:452)
                                                                          at org.opencv.android.BaseLoaderCallback.onPackageInstall(BaseLoaderCallback.java:90)
                                                                          at org.opencv.android.AsyncServiceHelper.InstallService(AsyncServiceHelper.java:117)
                                                                          at org.opencv.android.AsyncServiceHelper.initOpenCV(AsyncServiceHelper.java:33)
                                                                          at org.opencv.android.OpenCVLoader.initAsync(OpenCVLoader.java:100)
                                                                          at project.fragment.OpenCvTestFragment.onCreateView(OpenCvTestFragment.java:94)
                                                                          at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                                          at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                                          at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
                                                                          at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
                                                                          at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                                          at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
                                                                          at android.os.Handler.handleCallback(Handler.java:739)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
为便于说明,按下相应按钮时,会调用“applyContoursFilter”方法,然后将图像从可绘制对象(如imgView1所示)转换为Mat对象。 之后,调用“findContours”方法,然后将Mat对象转换回bmp格式,并再次设置为imgView1

这就是它应该如何工作的。但是上面发布的nullpointer错误被抛出,我不知道它来自哪里,也不知道如何修复它


我对Android比较陌生,非常感谢您的帮助。

我现在解决了这个问题,在我的应用程序的主要活动中初始化OpenCV,只在片段中调用它。 我将BaseLoaderCallBack代码从片段的OnCreateView移动到MainActivity的OnCreate。
现在似乎工作得很好。

我现在解决了这个问题,在我的应用程序的主活动中初始化OpenCV,只在片段中调用它。 我将BaseLoaderCallBack代码从片段的OnCreateView移动到MainActivity的OnCreate。
现在似乎工作正常。

在我在AlertDialog中使用GPSTracker.this之前。所以我得到了一个异常“android.content.res.Resources$Theme android.content.Context.getTheme()

我通过添加如下上下文解决了此异常:

private final Context mContext;

public GPSTracker(Context context) {

    this.mContext = context;


}

public void showSettingsAlert(String provider) {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

 ...........

 } 

在我在AlertDialog中使用GPSTracker.this之前,我得到了一个异常“android.content.res.Resources$Theme android.content.Context.getTheme()

我通过添加如下上下文解决了此异常:

private final Context mContext;

public GPSTracker(Context context) {

    this.mContext = context;


}

public void showSettingsAlert(String provider) {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

 ...........

 } 

initAsync()
调用中的
getContext()
替换为
getActivity()
,看看这是否有帮助。遗憾的是,没有,我仍然收到相同的错误。将
getContext()
替换为
initAsync()
调用中的
getActivity()
,看看这是否有帮助。遗憾的是没有,我还是有同样的错误。你能再解释一下你的解决方案吗?这太难想象了。谢谢你能再解释一下你的解决方案吗?这太难想象了。谢谢