Помощь с NullPointerException на уровне API 5 - PullRequest
1 голос
/ 18 декабря 2010

Я разработал свое приложение с использованием API уровня 8, но минимальный SDK - 3. Я провел большую часть тестирования на эмуляторе под управлением 8 и DroidX, а также на некоторых телефонах друзей.Пока проблем нет.Также следует знать, что я не использовал API выше Уровня 3, и Макет вкладок был почти и точной копией примера, предоставленного Google here .Так что .... при работе на эмуляторе с API уровня 5 я получаю следующую ошибку, и я понятия не имею, откуда она берется, за исключением ссылок на TabWidget.

Uncaught handler: thread main exiting due to uncaught exception
java.lang.NullPointerException
  at android.widget.TabWidget.dispatchDraw(TabWidget.java:206)
  at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
  at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
  at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
  at android.view.View.draw(View.java:6539)
  at android.widget.FrameLayout.draw(FrameLayout.java:352)
  at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
  at android.view.View.draw(View.java:6539)
  at android.widget.FrameLayout.draw(FrameLayout.java:352)
  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
  at android.view.ViewRoot.draw(ViewRoot.java:1348)
  at android.view.ViewRoot.performTraversals(ViewRoot.java:1113)
  at android.view.ViewRoot.handleMessage(ViewRoot.java:1632)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:123)
  at android.app.ActivityThread.main(ActivityThread.java:4310)
      at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:521)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  at dalvik.system.NativeStart.main(Native Method)


    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, parent.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("browse").setIndicator("Browse",
                      res.getDrawable(R.drawable.ic_tab_browse))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, bookmarks.class);
    spec = tabHost.newTabSpec("bookmarks").setIndicator("Bookmarks",
                      res.getDrawable(R.drawable.ic_tab_bookmarks))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, search.class);
    spec = tabHost.newTabSpec("search").setIndicator("Search",
                      res.getDrawable(R.drawable.ic_tab_search))
                  .setContent(intent);
    tabHost.addTab(spec);
    tabHost.setCurrentTab(0);

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

Мой tabhost показывал исключение nullPointer для 2.1, обновленное в то время, когда я держал его в linearLayout, но когда я попробовал Относительный макет, он работает нормально.Возможно, это изменение поможет вам, если вы застряли в той же ситуации.

1 голос
/ 18 декабря 2010

Без кода для работы трудно дать вам много советов.

  • Если вы не используете TabActivity, обязательно наберите setup() на своем TabHost прежде чем делать что-либо еще с ним.

  • Поскольку исключение исходит от TabWidget, попробуйте временно упростить индикаторы вкладок и посмотрите, поможет ли это локализовать или устранить проблему.

...