【问题标题】:LinearLayout onclick open WebView not browserLinearLayout onclick 打开 WebView 而不是浏览器
【发布时间】:2014-10-16 05:11:28
【问题描述】:

我目前有 4 个按钮,其中一个将使用 Intent 打开 Web 浏览器。我想使用 webview 打开浏览器。我已经看到了这个的代码,但我不知道如何实现它。

如果我使用此代码:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());

并更改 xml 文件以包含 WebView,它将它添加到我不想要的当前主屏幕。我只想在用户单击按钮后使用 WebView。我该怎么做?

xml:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/android"

>

<ScrollView
    android:id="@+id/settingsScrollView"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"

    >

</ScrollView>
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <Button
        android:id="@+id/Info"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Info"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"

    />
    <Button
        android:id="@+id/Search"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Search"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"
    />

</LinearLayout>
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <Button
        android:id="@+id/Facebook"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Facebook"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"

    />
    <Button
        android:id="@+id/Twitter"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Twitter"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"

    />

</LinearLayout>

MainActivity:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btn = (Button) findViewById(R.id.Search);
    btn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent myWebLink = new Intent(android.content.Intent.ACTION_VIEW);
            myWebLink.setData(Uri.parse("http://www.google.com"));
                startActivity(myWebLink);
         }
    });
}

【问题讨论】:

    标签: android webview onclick android-linearlayout


    【解决方案1】:

    你可以这样做:

    您的 activity_main.xml

    <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical"
     android:background="@drawable/android" >
    
    <ScrollView
    android:id="@+id/settingsScrollView"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    
    >
    
    </ScrollView>
     <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
     >
     <Button
        android:id="@+id/Info"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Info"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"
    
    />
    <Button
        android:id="@+id/Search"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Search"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"
    />
    
    </LinearLayout>
    <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
     >
     <Button
        android:id="@+id/Facebook"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Facebook"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"
    
    />
    <Button
        android:id="@+id/Twitter"
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="@string/Twitter"
        android:background="@drawable/button_colour"
        android:textSize="14sp"
        android:textStyle="bold"
    
      />
    

    webview.xml

     <?xml version="1.0" encoding="utf-8"?>
     <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/webView1"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" />
    

    MainActivity

     protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       Button btn = (Button) findViewById(R.id.Search);
    
       btn.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
            startActivity(intent);
         }
    });
    }
    

    WebViewActivity

    public class WebViewActivity extends Activity {
    
    private WebView webView;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);
    
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://www.google.com");
    
    }
    

    【讨论】:

    • 我收到此错误消息:此行的构造函数 Intent(new View.OnClickListener(){}, Class) 未定义: Intent intent = new Intent(this, WebViewActivity.class );在 MainActivity
    • 这样使用 Intent intent = new Intent(MainActivity.this, WebViewActivity.class);在按钮侦听器中的 MainActivity 中
    • 谢谢,效果很好,但是当我点击 WebView 中 URL 中的任何网站链接时,它会打开一个新的浏览器,而不是停留在 Webview 中
    【解决方案2】:

    您需要创建单独的Activity 然后只显示WebView 并在Button 上传递Intent Extra's 点击:

     <?xml version="1.0" encoding="utf-8"?>
     <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/webView1"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" />
    

    MainActivity

     protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       Button btn = (Button) findViewById(R.id.Search);
    
       btn.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
            Intent intent = new Intent(this, WebViewActivity.class);
            intent.putExtra("Url","http://www.google.com" )
            startActivity(intent);
         }
    });
    }
    

    WebViewActivity

    public class WebViewActivity extends Activity {
    
    private WebView webView;
    String url;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);
    
        Intent i = getIntent();
        url = i.getStringExtra("Url");
    
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(Uri.parse(url));
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2020-04-25
      相关资源
      最近更新 更多