繁体   English   中英

在另一个班级开始另一个活动

[英]Start another activity in another class

我有一个三类:MainActivity,BackgroundActivity和roomActivity。
BackgroundActivity将收到php服务器的反馈。 如果不是登录失败,它将调用RoomActivity类。
我想知道为什么不起作用?


BackgroundActivity:

 protected void onPostExecute(String result) {
            if (result.equals("<meta charset=\"utf-8\">login fail")) {
                alertDialog.setMessage("Please check your login email");
                alertDialog.show();
            } else {
                **Intent myIntent = new Intent(MainActivity.class, RoomActivity.class);
                startActivity(myIntent);**
    }





E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.a20_1discussboard, PID: 2262
                  java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
                      at android.content.ContextWrapper.getPackageName(ContextWrapper.java:132)
                      at android.content.ComponentName.<init>(ComponentName.java:77)
                      at android.content.Intent.<init>(Intent.java:4160)
                      at com.example.a20_1discussboard.MainActivity.check(MainActivity.java:38)
                      at com.example.a20_1discussboard.BackgroundWorker.onPostExecute(BackgroundWorker.java:151)
                      at com.example.a20_1discussboard.BackgroundWorker.onPostExecute(BackgroundWorker.java:24)
                      at android.os.AsyncTask.finish(AsyncTask.java:636)
                      at android.os.AsyncTask.access$500(AsyncTask.java:177)
                      at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5254)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

更改为
Intent myIntent = new Intent(MainActivity.this, RoomActivity.class) ;

从Activity外部调用startActivity()可能会产生AndroidRuntimeException ,使用类似Context

Intent myIntent = new Intent(MainActivity.class, RoomActivity.class);
getApplicationContext().startActivity(myIntent);

意向构造函数是错误的。

它应该像:

Intent myIntent = new Intent(getApplicationContext(), RoomActivity.class);
startActivity(myIntent);

您能否发布有关该问题的更多信息?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM