Android:Intent setClass导致NullPointer异常
问题描述:
我想从TcpClient使用Intent转到PreCamera。它会导致java.lang.NullPointer异常。Android:Intent setClass导致NullPointer异常
Intent intent = new Intent();
Log.v("Pic", "context");
intent.setClass(TcpClient.this, PreCamera.class);
Log.v("Pic", "ok");
this.mContext.startActivity(intent);
这是TcpClient的构建体:
public TcpClient(Context context) {
mContext = context;
}
这是异常信息:
12-08 10:56:53.515: V/Pic(2579): context
12-08 10:56:53.519: W/dalvikvm(2579): threadid=13: thread exiting with uncaught exception (group=0x40020ac0)
12-08 10:56:53.519: E/AndroidRuntime(2579): FATAL EXCEPTION: Thread-14
12-08 10:56:53.519: E/AndroidRuntime(2579): java.lang.NullPointerException
12-08 10:56:53.519: E/AndroidRuntime(2579): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120)
12-08 10:56:53.519: E/AndroidRuntime(2579): at android.content.ComponentName.<init>(ComponentName.java:75)
12-08 10:56:53.519: E/AndroidRuntime(2579): at android.content.Intent.setClass(Intent.java:4920)
12-08 10:56:53.519: E/AndroidRuntime(2579): at com.Image.Collect.TcpClient.takePic(TcpClient.java:330)
12-08 10:56:53.519: E/AndroidRuntime(2579): at com.Image.Collect.TcpClient.commandExecute(TcpClient.java:467)
12-08 10:56:53.519: E/AndroidRuntime(2579): at com.Image.Collect.TcpClient.receive(TcpClient.java:278)
12-08 10:56:53.519: E/AndroidRuntime(2579): at com.Image.Collect.TcpClient.talk(TcpClient.java:179)
12-08 10:56:53.519: E/AndroidRuntime(2579): at com.Image.Collect.InfoCollect$6.run(InfoCollect.java:303)
12-08 10:56:53.539: E/InfoCollect(2579): onPause
这是一些AndroidMainfest.xml信息:
<activity android:name=".TcpClient"
... (other info)
</activity>
<activity android:name=".PreCamera"
... (other info)
</activity>
API是级别8.
当我试试这个:
Intent intent = new Intent(TcpClient.this, PreCamera.class);
它会导致:
12-08 11:31:45.221: W/dalvikvm(2805): threadid=13: thread exiting with uncaught exception (group=0x40020ac0)
12-08 11:31:45.229: E/AndroidRuntime(2805): FATAL EXCEPTION: Thread-14
12-08 11:31:45.229: E/AndroidRuntime(2805): java.lang.NullPointerException
12-08 11:31:45.229: E/AndroidRuntime(2805): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120)
12-08 11:31:45.229: E/AndroidRuntime(2805): at android.content.ComponentName.<init>(ComponentName.java:75)
我看到有人说这是因为我的init mContext是太早了,应该以后onCreate()方法来初始化或后来。但是如何在这个方法之后初始化?我是Android Dev的初学者。
TcpClient是extends Activity。我用:
mContext = this;
Intent intent = new Intent(TcpClient.this, PreCamera.class);
它不是很好。
答
你为什么不尝试从TcpClient的活动这个代替...
Intent intent = new Intent(TcpClient.this, PreCamera.class);
this.mContext.startActivity(intent);
答
如果您正在启动PreCamera活动: 试试这个
TcpClient.this.startActivity(intent);
答
编辑:改变,因为TcpClient的延伸活动:
简单地说:
Intent intent = new Intent(this, PreCamera.class);
startActivity(intent);
这样做会工作的你其他的方式,它只是需要更多的代码:
Intent intent = new Intent();
intent.setClass(this, PreCamera.class);
startActivity(intent);
TcpClient的是扩展活动 – pthread
好吧,我已经编辑我的反应。在那种情况下,它更容易。 –