Проблема с отображением макета TabHost в новом намерении

У меня возникла проблема с использованием TabHost в новом намерении типа TabActivity, который, надеюсь, вы можете указать мне в правильном направлении. Смешно он отлично работает, когда я пытаюсь просмотреть его в оригинальном намерении: setContentView (R.layout.main)

Я получаю «принудительное закрытие» и внутри logcat, я получаю следующую ошибку, хотя мой Tabhost id = «@android: id / tabhost»:

02-18 22: 23: 11.937: ERROR / AndroidRuntime (5944): вызвано: java.lang.RuntimeException: ваш контент должен иметь TabHost, чей атрибут id – android.R.id.tabhost,

Я объявил второе намерение в файле Manifest.xml: XML:

<activity android:name=".NextActivity" android:label="@string/app_name" > 

В рамках первого действия (MainActivity) я запускаю второе намерение (NextActivity) с дополнительными функциями следующим образом:

 Intent nextActivity = new Intent(MainActivity.this,NextActivity.class); Bundle b_next=new Bundle(); b_next.putString("s_string", myString); nextActivity.putExtras(b_next); 

В моем файле NextActivity.java я получаю дополнительные функции и пытаюсь отобразить TabHost View:

 public class NextActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String myString; Bundle b_initial; b_initial = getIntent().getExtras(); myString = b_initial.getString("s_string"); setContentView(R.layout.main); } } 

Я получаю ту же ошибку с использованием примера TabHost на сайте разработчика Android (Hellow View):

main.xml:

 <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/textview1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="this is a tab" /> <TextView android:id="@+id/textview2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="this is another tab" /> <TextView android:id="@+id/textview3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="this is a third tab" /> </FrameLayout> </LinearLayout> </TabHost> 

Спасибо заранее людям …

РАЗРЕШЕНИЕ: Это то, что я действительно получаю от LogCat:

java.lang.NullPointerException
В android.widget.TabHost.dispatchWindowFocusChanged (TabHost.java 285) в android.view.ViewGroup.dispatchWindowFocusChanged (ViewGroup.java 640) в android.view.ViewGroup.dispatchWindowFocusChanged (ViewGroup.java 640) в android.view.ViewGroup.dispatchWindowFocusChanged (ViewGroup.java 640) на android.view.ViewRoot.handleMessage (ViewRoot.java 1645) на android.os.Handler.dispatchMessage (Handler.java 99) на android.os.Looper.loop (Looper.java 123) на android .app.ActivityThread.main (ActivityThread.java 3948) в java.lang.reflect.Method.invokeNative (собственный метод)
В java.lang.reflect.Method.invoke (Method.java 521) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java 782) в com.android.internal.os.ZygoteInit.main (ZygoteInit .java 540) в dalvik.system.NativeStart.main (родной метод)

Я ранее построил tabhosts с идентификатором android:id="@+id/tabhost" . Это работает для вас?

Вы также можете подумать о программном программировании:

  TabHost t = getTabHost(); TabSpec tab = t.newTabSpec(label) .setIndicator(label, icon) .setContent(intent); t.addTab(tab); 

У меня такая же проблема. К счастью, было быстрое исправление:

  1. Удалите файл R
  2. Подождите, пока ваша среда IDE сгенерирует файл.
  3. Прибыль!

Я скопировал и вставил код и заметил, что в атрибуте id у меня было:

 android:id="@+id/tabs" 

Когда я действительно хотел:

 android:id="@android:id/tabs" 

Я также столкнулся с этой проблемой. У меня был XML-файл, который не был правильно связан с моим кодом в моем res / layout. Когда я исправил именование, проблема исчезла.

Даже если я изменил свой main.xml на использование android:id="@android:id/tabhost" как и заявленная ошибка, он продолжал пытаться использовать старое имя. Наконец, я нашел файл res / layout-port / main.xml, который был идентичен main.xml, за исключением использования неправильного android: id. Я, должно быть, случайно добавил портретный портрет, и он держался за старое значение. Либо фиксируя портретный файл, либо удаляя его, исправляет мою проблему.

У меня также была эта ошибка. Для меня это проявилось после обфускации (через ProGuard), до обфускации это было прекрасно.

В итоге я переименовал свой файл макета в нечто более сложное и уникальное, и ProGuard не испортил связь. Бит легче, чем переход по пути настройки ProGuard.

Таким образом, моя проблема была похожа на SapphireSun, хотя и выражалась через другой процесс (и после затмения, только для того, чтобы сделать вещи более сложными).

Это, пожалуй, один из самых неясных способов получить эту ошибку, но я подумал, что стоит упомянуть.

"public class NextActivity extends TabActivity" change TabActivity для ActivityGroup.

Когда проблема возникает, когда вы хотите, чтобы wo запускал tabhost в tabhost.it, это нормально.

Я испытываю ту же ошибку в командном проекте при использовании SVN. Иногда eclipse загружает classes.dex и resources.ap_ из папки bin проекта, а другие получают его через обновление SVN.

Поскольку эти двоичные файлы генерируются на отдельных машинах с отдельным кодом, вероятно, там, где возникает ошибка.

Очистка файлов проекта (Project -> Clean) всегда решала проблему для нас!

У меня был этот вопрос вместе с «ERROR: Unknown option» – no-crunch ''. Если вы обновили плагин ADT в Eclipse, но не обновили SDK одновременно. Обновление диспетчера SDK в Eclipse, исправил проблему для меня.