встраивать макет внутри каждой вкладки? - (каждая вкладка имеет свою активность) - PullRequest
1 голос
/ 13 июня 2010

Я начал с примера HelloTabwidget, и он отлично работает.Теперь я пытаюсь сделать макет внутри каждой вкладки.вот как выглядит код

myApp extends TabActivity {
  TabHost tabHost;
  onCreate() {
      setContentView (R.layout.main);
      tabHost = getTabHost();
      TabHost.tabspec spec = tabHost.newTabSpec(..).setIndicator(...).
               setContent(new Intent().setClass(...));
       tabHost.addTab(spec);
       :
  }
}

myTab1Actvity extends Activity {
  ListView myLV;
  EditText myET;

  onCreate() {
    setcontentView (TAB1_LAYOUT);

        myLV = findViewById(..);
  :
     myLV.setAdapter(aa);
     myET.setOnKeyListener(....)
    registerforContextMenu(myLV)
  }
}

при запуске здесь - трассировка стека

 <code>
ERROR/AndroidRuntime(691): java.lang.NullPointerException
ERROR/AndroidRuntime(691):     at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java:295)
ERROR/AndroidRuntime(691):     at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
ERROR/AndroidRuntime(691):     at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
ERROR/AndroidRuntime(691):     at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java:295)
ERROR/AndroidRuntime(691):     at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
ERROR/AndroidRuntime(691):     at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
ERROR/AndroidRuntime(691):     at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
ERROR/AndroidRuntime(691):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1819)
ERROR/AndroidRuntime(691):     at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(691):     at android.os.Looper.loop(Looper.java:123)
ERROR/AndroidRuntime(691):     at android.app.ActivityThread.main(ActivityThread.java:4363)
ERROR/AndroidRuntime(691):     at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(691):     at java.lang.reflect.Method.invoke(Method.java:521)
ERROR/AndroidRuntime(691):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
ERROR/AndroidRuntime(691):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

Поток кода выглядит нормально?в основном каждая вкладка имеет свою собственную активность, и каждая вкладка имеет свой собственный макет.

Кажется, что-то не так в TabHost - но я не могу точно определить это.Любые предложения / вопросы, которые у вас есть, будут очень полезны.

1 Ответ

1 голос
/ 17 июня 2010

напоминает мне о «теореме о бесконечной обезьяне» - в любом случае, проблема заключалась в том, что файлы макетов, предназначенные для каждой вкладки, также содержали TabHost. Первый используемый мной уровень (корневой) тег - LinearLayout (а не TabHost)

...