试图在TabHost中打开WebView

时间:2011-10-18 19:48:48

标签: android webview android-tabhost

好的,所以我正在尝试创建一个小应用程序,在3个不同的选项卡中打开3个不同的Web视图。目前我已经创建了我的tabhost,并为我的webview创建了一个单独的类,但是当我打开应用程序时它没有显示。

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);
}

}

webview代码

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的其他人的帖子,但我不知道如何在应用程序打开时加载webview。任何帮助都会受到极大的欢迎。

上面的代码基于HelloWebView教程和HelloTabWidget教程

2 个答案:

答案 0 :(得分:2)

我曾经尝试过同样的事情,后来发现我没有为应用宣布适当的互联网访问权限。这就是原因,tabhost中的webview变得空白,Logcat中也没有错误。

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

将以上行添加到AndroidManifest.xml已解决了我的问题。

答案 1 :(得分:0)

我认为问题本身就在主要布局中,因为我只使用了唯一的修改来运行你的代码:

 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布局文件用于选项卡,并且webview控制器(和其他意图布局)应该位于其他布局文件中。为此,您可以使用教程:http://joshclemm.com/blog/?p = 136

我希望这会有所帮助