Как использовать WebView во вкладке и вызывать (LocalActivityManager activityGroup)?

У меня есть три вкладки, которые я хочу использовать, чтобы использовать мои три веб-просмотра для отображения определенных доменов. Все сборки находят, но когда я пытаюсь запустить приложение, оно принудительно закрывается, когда я его запускаю, и если я его отлаживаю - оно остается открытым с макетом и представлениями (в основном оно ничего не делает при отладке).

логарифм говорит

Не удалось запустить активность ComponentInfo{com.company.client/com.company.client.MainActivity}: java.lang.IllegalStateException: вы забыли вызвать «public void setup (LocalActivityManager ActivityGroup)»?**

Как мне это назвать?

Вот мой код:

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class MainActivity extends Activity {
TabHost th;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    th = (TabHost) findViewById(R.id.tabhost);
    th.setup();


    TabSpec firstSpec=th.newTabSpec("Classes & Events");
    firstSpec.setIndicator("Classes & Events", null);
    Intent firstIntent= new Intent(this, WebViewActivity.class);
    firstIntent.putExtra("backswipe", false);
    firstSpec.setContent(firstIntent);
    th.addTab(firstSpec);

    TabSpec secondSpec=th.newTabSpec("Twitter");
    secondSpec.setIndicator("Twitter", null);
    Intent secondIntent= new Intent(this, WebViewActivity2.class);
    secondSpec.setContent(secondIntent);
    th.addTab(secondSpec);

    TabSpec thirdSpec=th.newTabSpec("Facebook");
    thirdSpec.setIndicator("Facebook", null);
    Intent thirdIntent= new Intent(this, WebViewActivity3.class);
    thirdSpec.setContent(thirdIntent);
    th.addTab(thirdSpec);
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;

}

}

код веб-просмотра

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebView;

public class WebViewActivity extends Activity {

public WebView webView_A;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    webView_A = (WebView) findViewById(R.id.tab1);
    webView_A.getSettings().setJavaScriptEnabled(true);
    webView_A.loadUrl("http://www.eventbrite.com");

}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.web_view, menu);
    return true;
}

}

XML основной макет

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFB84D" >

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="-3dip"
        android:layout_weight="0" >
    </TabWidget>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >
    </FrameLayout>
</LinearLayout>

</TabHost>

Вот логарифм.

Итак, как я могу активировать свои WebViewActivities на вкладках и делать то, что мне говорит logcat?

Первая ошибка, которую я заметил, это то, что вы пытаетесь установить содержимое после добавления вкладки:


person DigiCoder    schedule 10.05.2013    source источник


Ответы (4)


Должен быть:

   TabSpec firstSpec=th.newTabSpec("Classes & Events");
   firstSpec.setIndicator("Classes & Events", null);
   Intent firstIntent= new Intent(this, WebViewActivity.class);
   th.addTab(firstSpec);
   firstSpec.setContent(firstIntent);

Основная концепция Tab-Activity выглядит следующим образом.

   TabSpec firstSpec=th.newTabSpec("Classes & Events");
   firstSpec.setIndicator("Classes & Events", null);
   Intent firstIntent= new Intent(this, WebViewActivity.class);
   firstSpec.setContent(firstIntent);
   th.addTab(firstSpec);
person Paresh Mayani    schedule 10.05.2013

TabHost – это контейнер для представления окна с вкладками. Этот объект содержит двух дочерних элементов: набор меток вкладок, которые пользователь щелкает, чтобы выбрать конкретную вкладку, и объект FrameLayout, отображающий содержимое этой страницы.

Отдельный элемент обычно управляется с помощью этого объекта-контейнера, а не задает значения для самих дочерних элементов.

TabWidget отображает список ярлыков вкладок, представляющих каждую страницу в родительской коллекции вкладок. Объект-контейнер для этого виджета — TabHost. Когда пользователь выбирает вкладку, этот объект отправляет сообщение в контейнер TabHost, чтобы указать переключить отображаемую страницу. Контейнер TabHost используется для добавления меток, добавления обработчика обратного вызова и управления обратными вызовами.

поэтому настройте свой макет следующим образом:

И фрагмент кода следующим образом -

<?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:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >
    </FrameLayout>

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="-3dip"
        android:layout_weight="0" >
    </TabWidget>
  </LinearLayout>

  </TabHost>

LogCat сообщает вам, что вы правильно инициализировали tabhost. Вы должны использовать «void setup (LocalActivityManager ActivityGroup)».

    tabSpec = tabHost.newTabSpec("InstructionId");
                           tabSpec.setIndicator("INSTRUCTIONS",getResources().getDrawable(R.drawable.manual));
    intent = new Intent(this, InstructionsScreen.class);
    intent.putExtra("backswipe", false);

    tabSpec.setContent(intent);   // set content must required the first before adding the tab
    tabHost.addTab(tabSpec);
person Swapnil Sonar    schedule 10.05.2013

Я думаю, вам просто нужно сделать это

person Piet Koole    schedule 03.06.2013

Потому что вам нужно установить представление содержимого перед добавлением вкладки внутри панели вкладок.

TabSpec firstSpec=th.newTabSpec("Classes & Events");
firstSpec.setIndicator("Classes & Events", null);
Intent firstIntent= new Intent(this, WebViewActivity.class);
firstSpec.setContent(firstIntent);
th.addTab(firstSpec);



TabSpec secondSpec=th.newTabSpec("Twitter");
secondSpec.setIndicator("Twitter", null);
Intent secondIntent= new Intent(this, WebViewActivity2.class);
secondSpec.setContent(secondIntent);
th.addTab(secondSpec);



TabSpec thirdSpec=th.newTabSpec("Facebook");
thirdSpec.setIndicator("Facebook", null);
Intent thirdIntent= new Intent(this, WebViewActivity3.class);
thirdSpec.setContent(thirdIntent);
th.addTab(thirdSpec);

05-23 01:23:06.886: W/dalvikvm(14673): threadid=1: поток завершается с необработанным исключением (группа=0x4160e930) 05-23 01:23:06.910: E/AndroidRuntime(14673): FATAL ИСКЛЮЧЕНИЕ: main 05-23 01:23:06.910: E/AndroidRuntime(14673): java.lang.RuntimeException: невозможно запустить действие ComponentInfo{com.company.client/com.company.client.MainActivity}: java.lang. IllegalStateException: Вы забыли вызвать 'public void setup (LocalActivityManager activityGroup)'? 05-23 01:23:06.910: E/AndroidRuntime(14673): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2307) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.app.ActivityThread.access$600(ActivityThread.java:153) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) 05 -23 01:23:06.910: E/AndroidRuntime(14673): на android.os.Handler.dispatchMessage(Handler.java:99) 05-23 01:23:06.910: E/AndroidRuntime(14673): на android.os .Looper.loop(Looper.java:137) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.app.ActivityThread.main(ActivityThread.java:5226) 05-23 01:23:06.910 : E/AndroidRuntime(14673): в java.lang.reflect.Method.invokeNative(собственный метод) 05-23 01:23:06.910: E/AndroidRuntime(14673): в java.lang.reflect.Method.invoke(метод .java:511) 05-23 01:23:06.910: E/AndroidRuntime(14673): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 05-23 01:23:06.910 : E/AndroidRuntime(14673): на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 05-23 01:23:06.910: E/AndroidRuntime(14673): на dalvik.system.NativeStart. main (собственный метод) 05–23 01:23:06.910: E/AndroidRuntime (14673): вызвано: java.lang.IllegalStateException: вы забыли вызвать «public voi d setup (LocalActivityManager ActivityGroup) '? 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:747) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.widget.TabHost.setCurrentTab(TabHost.java:413) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.widget.TabHost.addTab(TabHost.java:240) 05-23 01: 23:06.910: E/AndroidRuntime(14673): в com.company.client.MainActivity.onCreate(MainActivity.java:28) 05–23 01:23:06. 910: E/AndroidRuntime(14673): в android.app.Activity.performCreate(Activity.java:5104) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.app.Instrumentation.callActivityOnCreate(Instrumentation .java:1080) 05-23 01:23:06.910: E/AndroidRuntime(14673): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) 05-23 01:23:06.910: E/AndroidRuntime(14673) ): ... еще 11

person Jayeshkumar Sojitra    schedule 10.05.2013