Android TabActivity NullPointerException - PullRequest
       7

Android TabActivity NullPointerException

0 голосов
/ 11 ноября 2011

Проблемы с TabActivity ...

Я получаю это исключение

    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)

с этим кодом

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.
    }
}

И я не знаю почему.Кто-нибудь может мне сказать?

Ответы [ 3 ]

1 голос
/ 11 ноября 2011

Во-первых, вам не нужно вызывать tabHost.setup(), когда вы уже вызвали getTabHost ().

Во-вторых, вы, скорее всего, получите исключение NullPointerException, поскольку либо res.getDrawable(player.getDroid()), либо player.getName() возвращает ноль.

1 голос
/ 11 ноября 2011

Попробуйте использовать это как:

...    
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();

0 голосов
/ 11 ноября 2011

Ошибка в строке GameActivity.java:36, здесь нет номера строки. проверьте, что является нулем в этой строке. на широком уровне я думаю, что P layer player = WhoIsPlayingDialog.playerSelected; может быть нулевым, если вы не инициализировали static playerSelected

...