我需要从AsyncTask的onPosExecute方法启动另一个活动。 AsyncTask是一个单独的类,不在任何活动类中。
我使用了一个接口来做到这一点。代码是:
这是onPostExecute()方法
@Override
protected void onPostExecute(String json) {
Log.v("JSON", json);
Log.v("updateUI",""+updateUI);
updateUI.changeActivity();
}
这是界面
public interface UpdateUIListener {
public void changeActivity();
}
这是实现接口的活动类的一部分
@Override
public void changeActivity() {
Intent blah=new Intent(this,SplashActivity.class);
startActivity(blah);
finish();
}
当我运行代码时,在
行显示空指针异常 Intent blah=new Intent(this,SplashActivity.class);
我的堆栈跟踪是:
java.lang.NullPointerException
at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135)
at android.content.ComponentName.<init>(ComponentName.java:75)
at android.content.Intent.<init>(Intent.java:3546)
at com.autofoyer.SignUpActivity.changeActivity(SignUpActivity.java:79)
at com.autofoyer.common.MyClientTask.onPostExecute(MyClientTask.java:73)
at com.autofoyer.common.MyClientTask.onPostExecute(MyClientTask.java:23)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5099)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
at dalvik.system.NativeStart.main(Native Method)
我需要知道是什么原因以及如何解决零点异常。我需要从onPostExecute方法启动和活动。提前谢谢!
答案 0 :(得分:0)
您可能会使用updateUI
或类似内容new SplashActivity()
进行实例化。你不能这样做。相反,您必须将Context
传递到AsyncTask
并使用它来调用startActivity()
。您可能从某些AsyncTask
开始Activity
,因此在实例化Activity
时,只需将Context
作为AsyncTask
传递。