尝试在 nul 对象引用上调用虚拟方法 'android.content.ContentResolverr android.id.content.Context.getContentesolver()

Posted

技术标签:

【中文标题】尝试在 nul 对象引用上调用虚拟方法 \'android.content.ContentResolverr android.id.content.Context.getContentesolver()\'【英文标题】:Attempt to invoke virtual method 'android.content.ContentResolverr android.id.content.Context.getContentesolver()' on a nul object reference尝试在 nul 对象引用上调用虚拟方法 'android.content.ContentResolverr android.id.content.Context.getContentesolver()' 【发布时间】:2020-06-14 13:10:44 【问题描述】:

我在我的应用程序中使用 Telr SDK,同时使用它会显示上下文空指针,除非我使用了 Volley 库并在由“应用程序”类扩展的类中编写了一些方法。它一次又一次地向我显示此错误,因为我使用了由“Application”类扩展的“APPController”类并将其注册在“Applicaion”标签下的 Manifest 中。如果我在我的项目中不使用“Appcontroller”类,那么 Telr 网关可以完美运行,但我需要同时使用两者,请帮忙。

代码:

AppController.java:

public class AppController extends Application 

public static final String TAG = AppController.class
        .getSimpleName();
private RequestQueue mRequestQueue;
private static AppController mInstance;

@Override
public void onCreate() 
    super.onCreate();
    FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/Rubik-Regular.ttf");
    FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/Rubik-Regular.ttf");
    FontsOverride.setDefaultFont(this, "SERIF", "fonts/Rubik-Regular.ttf");
    FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/Rubik-Regular.ttf");

    mInstance = this;


public static synchronized AppController getInstance() 
    return mInstance;


public RequestQueue getRequestQueue() 
    if (mRequestQueue == null) 
        mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    
    return mRequestQueue;


public <T> void addToRequestQueue(Request<T> req, String tag) 
    // set the default tag if tag is empty
    req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
    getRequestQueue().add(req);


public <T> void addToRequestQueue(Request<T> req) 
    req.setTag(TAG);
    getRequestQueue().add(req);


public void cancelPendingRequests(Object tag) 
    if (mRequestQueue != null) 
        mRequestQueue.cancelAll(tag);
    



Telr.java:

public void sendMessage() 
    Intent intent = new Intent(Demo.this, WebviewActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
    intent.putExtra(WebviewActivity.EXTRA_MESSAGE, getMobileRequest());
    intent.putExtra(WebviewActivity.SUCCESS_ACTIVTY_CLASS_NAME, "com.marketplace.activity.SuccessTransationActivity");
    intent.putExtra(WebviewActivity.FAILED_ACTIVTY_CLASS_NAME, "com.marketplace.activity.FailedTransationActivity");
    intent.putExtra(WebviewActivity.IS_SECURITY_ENABLED, isSecurityEnabled);
    startActivity(intent);

我收到错误:Intent intent = new Intent(Demo.this, WebviewActivity.class);

Manifest.xml:

 <application
    android:name="com.marketplace.utils.AppController"
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    android:icon="@mipmap/app_icon_rect"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/app_icon_circle"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:replace="android:theme, android:name"
    android:usesCleartextTraffic="true"
    tools:ignore="GoogleAppIndexingWarning">

【问题讨论】:

【参考方案1】:

对于那些仍然有这个问题的人,你可以通过创建一个应用程序类来解决这个问题,如果你还没有一个应用程序类,然后用 Telr Application 扩展你的应用程序类,就是这样,它会解决你的问题。

public class MyApp extends TelrApplication 
  public void onCreate()
      super.onCreate();
   
  

【讨论】:

以上是关于尝试在 nul 对象引用上调用虚拟方法 'android.content.ContentResolverr android.id.content.Context.getContentesolver()的主要内容,如果未能解决你的问题,请参考以下文章

致命异常: main ,尝试在空对象引用上调用虚拟方法 [重复]

尝试在sqlite中的空对象引用上调用虚拟方法[重复]

尝试在空对象引用上调用虚拟方法 com.google.firebase.iid.FirebaseInstanceId.getInstanceId()'

NullPointerException 错误尝试在空对象引用上调用虚拟方法错误

数据库错误:尝试在空对象引用上调用虚拟方法“Cursor .getScene()”[重复]

Android错误尝试在空对象引用上调用虚拟方法[重复]