Android应用程序中的嵌入式Webview

时间:2011-06-08 21:21:03

标签: android android-widget

我正在尝试创建自己的浏览器,以便它将使用Web View显示我选择的页面。我的问题是,尽管我可以将Web View作为一个单独的应用程序工作(通过遵循http://developer.android.com/resources/tutorials/views/hello-webview.html中的教程),但我无法在我的应用程序中显示它。

我认为只需创建一个WebViewer(我的Web View实现)就可以运行该程序。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      

    WebViewer wv = new WebViewer();
}

(WebViewer设置为自动显示谷歌),但是当我运行程序时,我得到的只是一个白框。 main.xml文件具有WebViewer对象,并且在清单中建立了互联网权限。

当这不起作用时,我尝试直接实现Android的Web Viewer。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      

    WebView wv = new WebView(this);
    setContentView(wv);
    wv.loadUrl("http://stackoverflow.org/");
}

一旦我尝试运行它就会崩溃程序。

我知道我对此很新,也许我只是错过了一些小事,但我做错了什么?

2 个答案:

答案 0 :(得分:0)

回到第一次尝试,main.xml中有什么?大多数情况下,您应该在XML中使用您的视图(就像您链接到的示例中一样)并且您应该使用findViewById()(也在示例中)实例化您的视图。由于WebView没有任何布局参数,第二次尝试可能会崩溃,但我不是100%肯定。为什么不建立更多的例子?

答案 1 :(得分:0)

看起来您需要在onCreate中找到WebView并在其上执行loadUrl。您还要一次又一次地设置内容视图。除非你做的事真的很疯狂,否则你应该只需要一次。试试这个:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      

    WebView wv = findViewById(R.id.my_wv_id);
    wv.loadUrl("http://stackoverflow.org/");
}

twitter android sdk实际上有一个很好的例子来说明如何做到这一点:https://github.com/sugree/twitter-android-sdk/blob/master/twitter/src/com/sugree/twitter/TwDialog.java