Попытка открыть WebView в TabHost - PullRequest
1 голос
/ 18 октября 2011

Хорошо, поэтому я пытаюсь создать небольшое приложение, которое открывает 3 разных веб-просмотра на 3 разных вкладках. В настоящий момент у меня есть созданный tabhost, и отдельный класс для моего веб-просмотра, но когда я открываю приложение, оно не отображается.

Tabhost код

public class HelloTabWidgetActivity extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    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, HelloWebViewActivity.class);

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

    // Do the same for the other tabs
    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("SaintsTV",
                      res.getDrawable(R.drawable.ic_tab_songs))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, ArtistsActivity.class);
    spec = tabHost.newTabSpec("artists").setIndicator("Fixtures",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
}

}

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

public class HelloWebViewActivity extends Activity {
    WebView mWebView;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("http://www.google.com");
        mWebView.setWebViewClient(new HelloWebViewClient());
    }
}

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

Приведенный выше код основан на учебном пособии HelloWebView и учебном пособии HelloTabWidget

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Некоторое время назад я пытался сделать то же самое, а потом выяснил, что я не объявлял подходящие разрешения на доступ в Интернет для приложения. По этой причине веб-просмотр на вкладке становился пустым, и в Logcat также не было ошибок.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Добавление вышеуказанных строк в AndroidManifest.xml решило мою проблему.

0 голосов
/ 19 октября 2011

Я предполагаю, что сама проблема в основном макете, потому что я прекрасно запускаю ваш код с единственной модификацией:

 public class HelloWebViewActivity extends Activity {
    WebView mWebView;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        mWebView = new WebView(this);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("http://www.google.com");
        mWebView.setWebViewClient(new HelloWebViewClient());

        setContentView(mWebView);
    }
}

это для начала,

Я предлагаю использовать файл макета Tabhost только для вкладки, а контроллер веб-просмотра (и другие намеренные макеты) должны быть в других файлах макета. Для этого вы можете использовать учебник: http://joshclemm.com/blog/?p=136

Надеюсь, это поможет

...