2011-12-08 62 views
0

我想从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); 

它不是很好。

回答

0

你为什么不尝试从TcpClient的活动这个代替...

Intent intent = new Intent(TcpClient.this, PreCamera.class); 


this.mContext.startActivity(intent); 
0

如果您正在启动PreCamera活动: 试试这个

TcpClient.this.startActivity(intent); 
0

编辑:改变,因为TcpClient的延伸活动:

简单地说:

Intent intent = new Intent(this, PreCamera.class); 
startActivity(intent); 

这样做会工作的你其他的方式,它只是需要更多的代码:

Intent intent = new Intent(); 
intent.setClass(this, PreCamera.class); 
startActivity(intent); 
+0

TcpClient的是扩展活动 – pthread

+0

好吧,我已经编辑我的反应。在那种情况下,它更容易。 –