【问题标题】:Getting buttons to open different URLs in webview获取按钮以在 webview 中打开不同的 URL
【发布时间】:2014-07-07 20:22:21
【问题描述】:

我有一个带有大约十五个按钮的屏幕。每个按钮都应该在另一个屏幕上的 web 视图中打开一个特定的 url(设置为一个活动)。如何使 webview 根据单击的按钮显示正确的 url?

这是我的按钮代码:

package com.adanawtn.FunnMagViewerWindow;

import com.adanawtn.funnmagviewerwindow.R;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class mainactivity extends Activity implements OnClickListener
{
Button logobtn;
Button twitterbtn;
Button instagrambtn;
Button topeyebtn;
Button bestbtn;
Button gearsbtn;
Button artsbtn;
Button travelbtn;
Button eventsbtn;
Button dailybtn;
Button magbtn;
Button bttmeyebtn;
Button tvbtn;
Button mallbtn;

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


        Button twitterbtn = (Button) findViewById(R.id.twitterbtn);
        Button instagrambtn = (Button) findViewById(R.id.instagrambtn);
        Button topeyebtn = (Button) findViewById(R.id.topeyebtn);
        Button bestbtn = (Button) findViewById(R.id.bestbtn);
        Button gearsbtn = (Button) findViewById(R.id.gearsbtn);
        Button artsbtn = (Button) findViewById(R.id.artsbtn);
        Button travelbtn = (Button) findViewById(R.id.travelbtn);
        Button eventsbtn = (Button) findViewById(R.id.eventsbtn);
        Button dailybtn = (Button) findViewById(R.id.dailybtn);
        Button magbtn = (Button) findViewById(R.id.magbtn);
        Button bttmeyebtn = (Button) findViewById(R.id.bttmeyebtn);
        Button tvbtn = (Button) findViewById(R.id.tvbtn);
        Button mallbtn = (Button) findViewById(R.id.mallbtn);


 // logo            
      logobtn.setOnClickListener(new View.OnClickListener() {

          @Override
                public void onClick(View arg0) {
                    Intent logoClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com"));
                startActivity(logoClick);      
 }});


  // twitter
                twitterbtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View arg1) {

                        //Starting a new Intent

                        Intent twitClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://twitter.com/funnmagazine"));
                        // starting new activity

                        startActivity(twitClick);      
     }});
// instagram                    
                    instagrambtn.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View arg2) {

                            //Starting a new Intent

                            Intent instClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://instagram.com/funnmagazine"));

                            // starting new activity

                            startActivity(instClick);      
         }});

// topeye
                        topeyebtn.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View arg3) {

                                //Starting a new Intent

                                Intent topClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com"));

                                // starting new activity

                                startActivity(topClick);      
             }});

    // best
                            bestbtn.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View arg4) {

                                    //Starting a new Intent

                                    Intent bestClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/la"));

                                    // starting new activity

                                    startActivity(bestClick);      
                 }});
        // gears
                                gearsbtn.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View arg5) {

                                        //Starting a new Intent

                                        Intent gearsClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/gear"));

                                        // starting new activity

                                        startActivity(gearsClick);      
                     }});
// arts
                                    artsbtn.setOnClickListener(new View.OnClickListener() {
                                        @Override
                                        public void onClick(View arg6) {

                                            //Starting a new Intent

                                            Intent artsClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/art"));


                                            // starting new activity

                                            startActivity(artsClick);      
                         }});

// travel
                                        travelbtn.setOnClickListener(new View.OnClickListener() {
                                            @Override
                                            public void onClick(View arg7) {

                                                //Starting a new Intent

                                                Intent travelClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/travel"));

                                                // starting new activity

                                                startActivity(travelClick);      
                             }});
 //events
                                            eventsbtn.setOnClickListener(new View.OnClickListener() {
                                                @Override
                                                public void onClick(View arg8) {

                                                    //Starting a new Intent

                                                    Intent eventsClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/events"));


                                                    // starting new activity

                                                    startActivity(eventsClick);      
                                 }});
//daily
                                                dailybtn.setOnClickListener(new View.OnClickListener() {
                                                    @Override
                                                    public void onClick(View arg9) {

                                                        //Starting a new Intent

                                                        Intent dailyClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/daily"));

                                                        // starting new activity

                                                        startActivity(dailyClick);      
                                     }});
    // mag
                                                    magbtn.setOnClickListener(new View.OnClickListener() {
                                                        @Override
                                                        public void onClick(View arg10) {

                                                            //Starting a new Intent

                                                            Intent magClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/blog"));


                                                            // starting new activity

                                                            startActivity(magClick);      
                                         }});
// bttmeye
                                                        bttmeyebtn.setOnClickListener(new View.OnClickListener() {
                                                            @Override
                                                            public void onClick(View arg11) {

                                                                //Starting a new Intent

                                                                Intent bttmClick = new Intent(getApplicationContext(), Class1.class);

                                                                // starting new activity

                                                                startActivity(bttmClick);      
                                             }});
 // tv
                                                            tvbtn.setOnClickListener(new View.OnClickListener() {
                                                                @Override
                                                                public void onClick(View arg12) {

                                                                    //Starting a new Intent

                                                                    Intent tvClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/funn-tv"));

                                                                    // starting new activity

                                                                    startActivity(tvClick);      
                                                 }});

    // mall
                                                                mallbtn.setOnClickListener(new View.OnClickListener() {
                                                                    @Override
                                                                    public void onClick(View arg13) {

                                                                        //Starting a new Intent

                                                                        Intent mallClick = new Intent(Intent.ACTION_VIEW, Uri.parse("http://funnmag.com/mall"));

                                                                        // starting new activity

                                                                        startActivity(mallClick);      
                                                     }});



 }

@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub

}

}

这里是保存 webview 的 Activity 的代码:

package com.adanawtn.FunnMagViewerWindow;

import com.adanawtn.funnmagviewerwindow.R;


import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.webkit.WebView;

public class Class1 extends Activity {

 @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_class1);


 WebView webview1 = (WebView) findViewById(R.id.webView1);


Intent logoClick = getIntent();
    String uri = logoClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(uri);

Intent twitClick = getIntent();
    String twituri = twitClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(twituri);   


Intent instClick = getIntent();
    String insturi = instClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(insturi);  

    Intent bestClick = getIntent();
    String besturi = bestClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(besturi);  

    Intent gearsClick = getIntent();
    String gearsuri = gearsClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(gearsuri);     

 Intent artsClick = getIntent();
    String artsuri = artsClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(artsuri);  

    Intent travelClick = getIntent();
    String traveluri = travelClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(traveluri);    

 Intent eventsClick = getIntent();
    String eventsuri = eventsClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(eventsuri); 

 Intent dailyClick = getIntent();
    String dailyuri = dailyClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(dailyuri);     

 Intent magClick = getIntent();
    String maguri = magClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(maguri);   

    Intent tvClick = getIntent();
    String tvuri = tvClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(tvuri);    


Intent mallClick = getIntent();
    String malluri = mallClick.getStringExtra("uri");
    setContentView(webview1);
    webview1.loadUrl(malluri);  


}


}

【问题讨论】:

  • 在 Class1 中,您有 12 倍于四个代码行 getIntent()-loadUrl()。一个会做的。
  • 在 mainactivity 中创建所有新意图,如 Intent bttmClick = new Intent(getApplicationContext(), Class1.class);

标签: android button webview


【解决方案1】:

你应该像这个例子一样构建你的Intents

Intent instClick = new Intent(this, Class1.class);
instClick.putExtra("uri", "http://instagram.com/funnmagazine");
startActivity(instClick);

然后,您在 webview 活动中的代码应该可以工作,但您只需要您用来设置 webview 的一小段代码,而不是全部十五段。

【讨论】:

  • 所以即使每个按钮/意图都有不同的名称,我也可以只使用一个 sn-p 用于 webview?
  • 是的,因为按钮和意图对象的名称不会与意图一起传递。如果您对额外的名称使用相同的名称(例如 uri),您应该只使用一个 sn-p。
  • 那么我如何在 webview 活动中标记意图?会不会是这样的:` Intent getClick = getIntent();字符串 uri = getClick.getStringExtra("uri");设置内容视图(webview1); webview1.loadUrl(uri); `
  • 名称不相关。只需使用Intent intent = .... 保持通用。并且不需要 setContentView() ,因为您之前已经这样做了。除非你有特殊原因。
  • @SyrupandSass 如果您只需要额外的意图,您可以使用String uri = getIntent().getStringExtra("uri");。这样你就不用担心命名了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 2023-02-03
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多