Android: Intent setClass вызывает исключение NullPointer - PullRequest
0 голосов
/ 08 декабря 2011

Я хочу использовать Intent из TcpClient и перейти к PreCamera.Это вызывает java.lang.NullPointer Exception.

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

thisэто некоторая информация 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)

Я вижу, что кто-то говорит, что это потому, что я инициализирую mContext слишком рано. Он должен быть инициирован после метода OnCreate () или позже.Но как начать после этого метода?Я новичок в разработке Android.

TcpClient - это расширяет активность.Я использую:

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

плохо просыпается.

Ответы [ 3 ]

0 голосов
/ 08 декабря 2011

Если вы запускаете действие PreCamera из действия TcpClient: попробуйте это

TcpClient.this.startActivity(intent);
0 голосов
/ 08 декабря 2011

РЕДАКТИРОВАТЬ: Изменено, потому что TcpClient расширяет активность:

Как насчет этого просто:

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

Ваш другой способ сделать это будет работать, просто требуется большекод:

Intent intent = new Intent();
intent.setClass(this, PreCamera.class);
startActivity(intent);
0 голосов
/ 08 декабря 2011

Почему бы вам не попробовать это вместо этого ...

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


this.mContext.startActivity(intent);
...