【发布时间】:2019-09-13 10:03:02
【问题描述】:
我已经在这里和那里搜索了两天,但似乎没有任何解决方案不起作用。问题出在Fitness.getSessionsClient(this, Objects.requireNonNull(GoogleSignIn.getLastSignedInAccount(2ndclass.mContext))) 及其传递的活动 (this) 和上下文 (2ndClass.mContext) 变量中,我可以通过许多找到的方法填充(变量或非空或空通过调试器检查)。仍然 - 我总是得到 NPE (java.lang.NullPointerException) 或 getApplicationContext() 为空。有什么想法吗?
崩溃日志行:
E/<SOME TAG>: Error during PUT connection... Data: {"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"base":"stations","main":{"temp":13.11,"pressure":1033,"humidity":77,"temp_min":10,"temp_max":16.11},"visibility":10000,"wind":{"speed":3.1,"deg":330},"clouds":{"all":69},"dt":1568357213,"sys":{"type":1,"id":1414,"message":0.0113,"country":"GB","sunrise":1568352700,"sunset":1568398909},"timezone":3600,"id":2643743,"name":"London","cod":200} Message: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
代码片段:
第一个(MainActivity)类:
public class 1stClass extends AppCompatActivity {
public static 1stClass instance;
public static Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
instance = this;
mContext = getApplicationContext();
}
public final void 1stmethod(){
2ndClass.2ndmethod();
}
/**
* @return instance
*/
@Contract(pure = true)
public static 1stClass getInstance() { return instance; } // return.getInstance();
public static Context getContext() {
// return instance.getApplicationContext();
return mContext;
}
}
二等:
public class 2ndClass extends 1stClass{
static 2ndClass instance;
public final void 2ndmethod() {
instance = this;
3rdClass MFP = new 3rdClass();
MFP.3rdmethod(..);
}
/**
* @return instance
*/
@Contract(pure = true)
public static 2ndClass getInstance() { return instance; } //return.getInstance();
}
非活动(第三)类:
public final class 3rdClass extends 2ndClass {
static 3rdClass instance;
public void 3rdmethod() {
instance = this;
Fitness.getSessionsClient(this, Objects.requireNonNull(GoogleSignIn.getLastSignedInAccount(2ndclass.mContext))) // <---- ERROR HERE
.insertSession(request)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.i(TAG, "Session insert was successful!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.wtf(TAG, "There was a problem inserting the session: " +
e.getLocalizedMessage());
}
});
/**
* @return instance
*/
@Contract(pure = true)
public static MFPalInterface getInstance() {
return instance;
} // return.getInstance();
}
【问题讨论】:
-
您能否编辑您的代码并添加注释,指出引发异常的行?对于所有这些重命名的方法,我很难弄清楚调用层次结构。另外:所有
static关键字都在敲响警钟 -
同时添加崩溃日志。
-
@JeroenSteenbeeke,已添加评论!谢谢! :)
-
无法理解代码中的任何内容(问题),这太脏了
-
老兄,你的代码太脏了......它有太多的泄漏,
static的不必要和非常糟糕的使用
标签: java android android-activity android-context