【问题标题】:Issue on to populate WebView in Activity在 Activity 中填充 WebView 的问题
【发布时间】:2013-04-23 07:51:21
【问题描述】:

我正在编写一个应用程序来在我的活动中启动 webView。但它是在网络浏览器中启动的。

我参考linksthis tutorial too

但是当我使用shouldOverrideUrlLoading 时,我只能得到空白屏幕。

对于那个问题我参考了this link

但在我的情况下没有人帮助..

我已经给出了我的代码。

请注意我犯了什么错误?

我的代码是:

webview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal|center_vertical"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center_horizontal|center_vertical" >
    </WebView>

</LinearLayout>

WebViewActivity.java

public class webViewActivity extends Activity {

    private WebView webView;
    private String strUrl;
    public final String TAG = "webViewActivity";
    ProgressBar progBar;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.webview);
        Bundle bundle = getIntent().getExtras();
        strUrl = bundle.getString("URL");
        Log.d(TAG, "link is " + strUrl);
        // strUrl = "www.google.com";
        webView = new WebView(this);
        webView.loadUrl(strUrl);

        // progBar = (ProgressBar)findViewById(R.id.progWeb);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(strUrl);
                return true;
            }
        });
}

请帮助纠正我的错误。

提前谢谢你!!

【问题讨论】:

  • 你的意思是当你加载webview时你得到一个白屏,对吗?
  • 完全正确。
  • 好的,那么您只需尝试将 webview 的背景颜色设置为零
  • 喜欢这个 webView.setBackgroundColor(0);
  • 嘿,我试过你的代码,问题是动态调用 webview 检查

标签: android android-activity android-webview


【解决方案1】:
    <WebView
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center_horizontal|center_vertical" >
   </WebView>

在您的活动中,您需要找到 webview 的 id。

webView = new WebView(this);

您正在创建一个 webview,但您没有将其添加到您的布局中

您已经在 xml 中定义了 webview,因此无需再次创建。找到 webview 的 id 并相应地加载 url。

   setContentView(R.layout.webview);
   webView = (WebView) findViewById(R.id.webView);// you need to find the id of webview
   Bundle bundle = getIntent().getExtras();
   strUrl = bundle.getString("URL");      
   webView.loadUrl(strUrl);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            view.loadUrl(strUrl);
            return true;
        }
    }); 

确保您已在清单文件中添加互联网权限

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

检查以下链接中的编辑 2 以获取工作示例

Enable back button in WebView

【讨论】:

  • 感谢您的宝贵回复.. 它工作正常.. 实际上,我已经尝试使用“webView = (WebView) findViewById(R.id.webView);”,它没有工作。但我使用了你的代码。我已经认识到变化是,将 tools:context=".webViewActivity" 这一行放在 .xml 文件中。非常感谢。
  • 当然.. 我有一个疑问。如果我希望进度条显示加载方式,我是在 xml 本身中使用进度条还是使用“requestWindowFeature(Window.FEATURE_PROGRESS);”够了吗?
【解决方案2】:

我尝试了您的代码,问题在于动态调用 webview 检查。 你没用过

          setContentView(webView);

试试这个...

【讨论】:

  • 我已经用过 setContentView(R.layout.webview) 不?我会把这个放在哪里?
  • @kavya 不需要像 webview wv= new WebView(this);他已经在 xml 中有一个 webview,并且他已经设置了相同的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2011-08-13
相关资源
最近更新 更多