根据按钮链接在webview中显示特定的url

Posted

技术标签:

【中文标题】根据按钮链接在webview中显示特定的url【英文标题】:Show specific url in webview according to button link 【发布时间】:2018-03-27 00:50:58 【问题描述】:

我是 android 应用程序开发的新手。通过搜索许多链接并阅读 *** 上的讨论,我能够通过按钮链接创建 WebView。但是虽然我尝试了很多,但我无法成功在 WebView 中使用多 URL。我的意思是如何根据特定的按钮链接在一个 web 视图中显示不同的 URL。例如:如果单击按钮 1,它将显示 google.com,按钮 2 将在 webview 中显示 facebook.com 等。我编码如下。

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <Button
        android:id="@+id/button1"
        android:layout_
        android:layout_
        android:text="Loading from a Webpage"
        android:layout_margin="10dp"
        android:onClick="clickweb"/>

    <Button
        android:id="@+id/button2"
        android:layout_
        android:layout_
        android:text="Loading from a Webpage"
        android:layout_margin="10dp"
        android:onClick="clickweb"/>

</LinearLayout>

MainActivity.java

公共类 MainActivity 扩展 Activity

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


public void clickweb(View v) 
    Toast.makeText(MainActivity.this, "Web view selected", Toast.LENGTH_LONG).show();
    Intent i1 = new Intent(MainActivity.this,LoadWeb.class);
    startActivity(i1);


LoadWeb.java

@SuppressLint("SetjavascriptEnabled")
public class LoadWeb extends Activity 

private WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webviewex);

    // Get reference of WebView from layout/webviewex.xml
    mWebView = (WebView) findViewById(R.id.webView1);

    setUpWebViewDefaults(mWebView);
    // Load website
    mWebView.loadUrl("https://www.google.co.in");


//Convenience method to set some generic defaults for a

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setUpWebViewDefaults(WebView webView) 
    WebSettings settings = webView.getSettings();

    // Enable Javascript
    settings.setJavaScriptEnabled(true);

    // Use WideViewport and Zoom out if there is no viewport defined
    settings.setUseWideViewPort(true);
    settings.setLoadWithOverviewMode(true);

    // Enable pinch to zoom without the zoom buttons
    settings.setBuiltInZoomControls(true);

    if(Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) 
        // Hide the zoom controls for HONEYCOMB+
        settings.setDisplayZoomControls(false);
    

    // Enable remote debugging via chrome://inspect
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
        WebView.setWebContentsDebuggingEnabled(true);
    


webviewex.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_ >

    <WebView
        android:id="@+id/webView1"
        android:layout_
        android:layout_ />

</RelativeLayout>

【问题讨论】:

你确定你都试过了吗?您需要致电mWebView.loadUrl 应该可以正常工作。用不同的 URL 点击按钮再次调用它。 顺便说一句,每个链接都打开相同的 url 'google.co.in'。也许,在分配下一个 url 时(我的)有问题。假设如何将 facebook.com 分配给按钮 2,我会感到困惑吗?感谢您的回复。 使 mWebView 成为成员变量,当点击 facebook 按钮时,使用新的 url 调用 mWebView.loadUrl() 【参考方案1】:

您的按钮需要不同的外壳。之后,您可以在开始 LoadWeb 活动之前向 Intent 添加额外内容。在这种情况下,您将添加一个包含要加载的 URL 的字符串。最后一步是从初始意图中获取 LoadWeb 活动中的此字符串,并将其设置为 loadUrl() 中的 URL;

MainActivity.java

public void clickweb(View v) 

    Toast.makeText(MainActivity.this, "Web view selected", Toast.LENGTH_LONG).show();
    Intent i1 = new Intent(MainActivity.this,LoadWeb.class);

    switch(v.getId()) 
        case R.id.button1:
            i1.putExtra("URL", "https://www.google.co.in");
            break;
        case R.id.button2:
            il.putExtra("URL", "https://www.facebook.com");
            break;
    

    startActivity(i1);

LoadWeb.java

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webviewex);

    // Get reference of WebView from layout/webviewex.xml
    mWebView = (WebView) findViewById(R.id.webView1);

    setUpWebViewDefaults(mWebView);

    // Get URL from Intent
    String URL = getIntent().getExtras().getString("URL");

    // Load website
    mWebView.loadUrl(URL);

查看 Intent 的文档以了解您可以通过 Intent 发送和检索的其他内容 https://developer.android.com/reference/android/content/Intent.html

【讨论】:

非常感谢@CodeRed,它可以工作,但是第二个链接在网络浏览器中打开,而不是在网络视图中。如何解决? 好吧,我现在没有太多时间,但你可以试试我会尝试的方法:Try this 我修好了。非常感谢@CodeRed

以上是关于根据按钮链接在webview中显示特定的url的主要内容,如果未能解决你的问题,请参考以下文章

如何从 webview 中的 json responseString 获取特定方法

如何为 tableview 上的 webview 内容启用 VoiceOver

如果在 WebView 中按下后退按钮,如何返回上一页?

在初始化程序中加载 webview 内容

为 UITableViewCell 上的特定按钮删除 UIButton 事件的链接

单击播放按钮时,Youtube 视频在 webView 中显示黑屏