Java 尝试调用虚拟方法';android.content.res.Resources$Theme android.content.Context.getTheme()';关于空对象引用
我想在Android应用程序内的图像上运行一些OpenCv过滤器。 我犯了一个错误,似乎找不到其根源 堆栈跟踪: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
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()
,看看这是否有帮助。遗憾的是没有,我还是有同样的错误。你能再解释一下你的解决方案吗?这太难想象了。谢谢你能再解释一下你的解决方案吗?这太难想象了。谢谢