我知道這是常見問題,但無法找到我的錯誤。 我需要將Activity的上下文傳遞給RestClient類,它是非活動的。我不喜歡這樣寫道:從非活動類開始活動並將上下文傳遞給它
public class RestClient {
public void setContextRest(Context ctx)
{
this.context = ctx;
}
public Context getContextRest()
{
return this.context;
}
public RestClient(Context context)
{
this.context = context;
}
}
,並在我的活動類:
RestClient helper = new RestClient(LoginActivity.this);
helper.setContextRest(LoginActivity.this);
,這是我如何得到它的RESTClient實現:
Intent i = new Intent(context, LoginActivity.class);
i.putExtra("relogin", true);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
,我得到
java.lang.NullPointerException
at android.content.ComponentName.<init>(ComponentName.java:75)
at android.content.Intent.<init>(Intent.java:2823)
at com.library.RestClient.Execute(RestClient.java:276)
at com.library.JSONParser.getJSONFromUrl(JSONParser.java:46)
at com.library.UserFunctions.loginUser(UserFunctions.java:76)
at com.assignmentexpert.LoginActivity$LoginTask.doInBackground(LoginActivity.java:318)
at com.assignmentexpert.LoginActivity$LoginTask.doInBackground(LoginActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
threadid=9: thread exiting with uncaught exception (group=0x40018578)
在Intent i = new Intent(context, LoginActivity.class);
。問題是context
由於某種原因而爲空。請告訴我,它是什麼?
你肯定傳遞null。 –
如果您使用RestClient構造函數來初始化上下文變量,則無需從LoginActivity活動中調用setContextRest –
在應用程序中傳遞上下文時,應儘可能使用Activity.getApplicationContext()。將活動用作上下文可能會導致該活動在內存中保存的時間比它需要的時間長得多,從而導致內存問題。 – TofferJ