我尝试开始新的活动然后我收到错误"不幸的应用程序....."来自模拟器。
03-24 12:41:53.242: E/AndroidRuntime(1245): FATAL EXCEPTION: main
03-24 12:41:53.242: E/AndroidRuntime(1245): java.lang.NullPointerException
03-24 12:41:53.242: E/AndroidRuntime(1245): at android.content.ComponentName.<init>(ComponentName.java:75)
03-24 12:41:53.242: E/AndroidRuntime(1245): at android.content.Intent.<init>(Intent.java:3662)
03-24 12:41:53.242: E/AndroidRuntime(1245): at de.basti12354.tage.uebungen.Tag1$1$1.run(Tag1.java:115)
03-24 12:41:53.242: E/AndroidRuntime(1245): at android.os.Handler.handleCallback(Handler.java:730)
03-24 12:41:53.242: E/AndroidRuntime(1245): at android.os.Handler.dispatchMessage(Handler.java:92)
03-24 12:41:53.242: E/AndroidRuntime(1245): at android.os.Looper.loop(Looper.java:137)
03-24 12:41:53.242: E/AndroidRuntime(1245): at android.app.ActivityThread.main(ActivityThread.java:5103)
03-24 12:41:53.242: E/AndroidRuntime(1245): at java.lang.reflect.Method.invokeNative(Native Method)
03-24 12:41:53.242: E/AndroidRuntime(1245): at java.lang.reflect.Method.invoke(Method.java:525)
03-24 12:41:53.242: E/AndroidRuntime(1245): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-24 12:41:53.242: E/AndroidRuntime(1245): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-24 12:41:53.242: E/AndroidRuntime(1245): at dalvik.system.NativeStart.main(Native Method)
我已将新活动添加到ManifestLayout。
这是我开始名为Uebung2.class的新活动的代码。
@Override
public void run() {
while (Running){
try {
Thread.sleep(1000);}
catch (InterruptedException e) {
e.printStackTrace();
// TODO: handle exception
}
handler.post(new Runnable() {
@Override
public void run(){
number+=1;
textfield.setText(String.valueOf(number));
if (number>5) {
Intent intent = new Intent(null, Uebung2.class);
startActivity(intent);
}
}
} );
}
}
};
new Thread(runnable).start();
答案 0 :(得分:2)
Intent intent = new Intent(null, Uebung2.class);
您必须为Intent
构造函数提供有效的Context
,而不是null
。
使用什么取决于代码所在的上下文(原文如此)。如果嵌套的内部类实际上在活动中,请使用ActivityName.this
来引用外部活动类。
另外,请考虑仅使用handler.postDelayed()
在后台线程中生成延迟而不是Thread.sleep()
。
答案 1 :(得分:2)
您的上下文为空
Intent intent = new Intent(null, Uebung2.class);
使用
Intent intent = new Intent(ActivityName.this, Uebung2.class);
此外,我没有看到任何网络或后台计算完成。因此,如果你想要一个dealy,那么只使用处理程序是一个更好的选择。
答案 2 :(得分:0)
您应该像这样传递活动中的上下文。
Intent intent = new Intent(ActivityName.this, Uebung2.class);
(or)
Intent intent = new Intent(getApplicationContext(), Uebung2.class);
答案 3 :(得分:0)
初步创建班级的上下文。
Context context = Activityname.this;
然后按如下方式更改您的意图
Intent intent = new Intent(context, Uebung2.class);
答案 4 :(得分:0)
您无法将上下文作为null传递。所以需要改变
Intent intent = new Intent(null, Uebung2.class);
到
Intent intent = new Intent(YourActivityName.this, Uebung2.class);
答案 5 :(得分:0)
替换此行
Intent intent = new Intent(null,Uebung2.class);
用这个:
Intent intent = new Intent(ActivityName.this,Uebung2.class);
(或)
Intent intent = new Intent(getApplicationContext(),Uebung2.class);
并且不要忘记在Androidmanifest.xml中提及活动
答案 6 :(得分:0)
Intent intent = new Intent(this, Uebung2.class);
或
Intent intent = new Intent(Youactivityname.this, Uebung2.class);
//Youactivityname mean the activity you was in like Mainactivity