2011-11-11 19 views
0

問題...アンドロイドTabActivity NullPointerExceptionが

私はこのコード

public class GameActivity extends TabActivity { 

    @Override 
    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.tab_handler); 

     Gson gson = new Gson(); 
     Player player = WhoIsPlayingDialog.playerSelected; 
     Resources res = getResources(); // Resource object to get Drawables 
     TabHost tabHost = getTabHost(); 
     tabHost.setup(); 
     tabHost.setTag(this); 
     TabHost.TabSpec spec = tabHost.newTabSpec(player.getName()); 
     Intent intent = new Intent(GameActivity.this, GamePlayerActivity.class); 
     intent.putExtra("player", gson.toJson(player)); 
     spec.setContent(intent); 
     spec.setIndicator(player.getName(), res.getDrawable(player.getDroid())); 
     tabHost.addTab(spec); <============ Line 36. 
    } 
} 

と、この例外

java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
    at android.app.ActivityThread.startActivityNow(ActivityThread.java:1651) 
    at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
    at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
    at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:656) 
    at android.widget.TabHost.setCurrentTab(TabHost.java:326) 
    at android.widget.TabHost.addTab(TabHost.java:216) 
    at home.android.yahtzee.activities.GameActivity.onCreate(GameActivity.java:36) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:143) 
    at android.app.ActivityThread.main(ActivityThread.java:4196) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
    at dalvik.system.NativeStart.main(Native Method) 

を取得し、私はなぜ知りません。誰でも私に教えてくれますか?

答えて

1

最初に初期化していない場合、あなたは)すでにgetTabHost(呼び出したときtabHost.setup()を呼び出す必要はありませんヌルかもしれないと思う幅広いレベルで 。

第2に、res.getDrawable(player.getDroid())またはplayer.getName()のいずれかがnullを返すため、NullPointerExceptionが発生する可能性があります。

+0

ありがとうございます。 'tabHost.setup()'を削除します。私はチェックして、 'res.getDrawable(player.getDroid())' player.getName() 'はnullではありません。 – Bastaix

+0

あなたのレイアウトファイルに 'android:id =" @ + android:id/tabhost "'を付けてTabHostを指定しましたか? マニフェストファイルに 'GamePlayerActivity.class'を宣言しましたか? –

+0

両方の質問にYesです。 – Bastaix

0

エラーは行番号GameActivity.java:36です。ここには行番号はありません。 この行には何が含まれているかを確認します。私はP layer player = WhoIsPlayingDialog.playerSelected; uは静的playerSelected

+0

申し訳ありませんを削除します。私は行番号を追加しました。 'player'は初期化されているのでnullではありません。 – Bastaix

1

が好き、それを使用してみてください:

...  
TabHost.TabSpec spec; 
Intent intent; 

intent = new Intent().setClass(getApplicationContext(), GamePlayerActivity.class); 
spec = tabHost.newTabSpec(player.getName()).setIndicator(player.getName(),res.getDrawable(player.getDroid())).setContent(intent); 
tabHost.addTab(spec); 

tabHost.setup();

関連する問題