【问题标题】:Can you please help me with this code?你能帮我这个代码吗?
【发布时间】:2014-03-08 16:08:16
【问题描述】:

问题:当我输入一个ID并按下按钮时,它不会加载该ID的网页...

“a url”是我正在尝试创建的网站页面,(由于多种原因而隐藏)

它应该可以工作,它加载了第一个站点,但是当我尝试调用 ID 时,WebView 没有改变......有人可以帮我吗? -谢谢,JG1

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    wv.setWebViewClient(new OurViewClient());
    wv.getSettings().setJavaScriptEnabled(true);
    try {
        String url = "a url";
        wv.loadUrl(url);
    } catch (Exception e) {
        e.printStackTrace();
    }
    String lid = "0";

    //Clicking button changes to the color

}

final EditText idbox = (EditText) findViewById(R.id.editText1);
final Button idbutton = (Button) findViewById(R.id.idbtn);
final WebView wv = (WebView) findViewById(R.id.webView1);

public void onClick(View v) {
    idbutton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            String lid = idbox.getText().toString();
            if (lid == "1") {
                wv.setWebViewClient(new OurViewClient());
                try {
                    String urla = "a url";
                    wv.loadUrl(urla);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (lid == "2") {
                wv.setWebViewClient(new OurViewClient());
                try {
                    String urlb = "a url";
                    wv.loadUrl(urlb);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (lid == "3") {
                wv.setWebViewClient(new OurViewClient());
                try {
                    String urlc = "a url";
                    wv.loadUrl(urlc);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    });
}

【问题讨论】:

  • lid=="1" - 您不能使用相等运算符比较 String 的内容。 == 测试两个对象是否是同一个对象。请改用equals()(并考虑做一些基本的Java教程)。通过字符串实习,lid=="1" 可能有时是真的,但你无法控制它。顺便说一句,如果你学会了如何使用调试器,你会在几秒钟内找到。

标签: java android webview


【解决方案1】:

我猜,你被称为相同的 URL 值,如 ("a url")。如果是,请尝试在 Web 视图中加载不同的 URL。

如果没有,请在您的代码中进行以下更改,

  • 在获得 EditText 值的地方设置断点来调试代码。

    String lid = idbox.getText().toString(); //检查盖子是null还是not

  • 像这样改变 if 条件,

    if(lid.equalsIgnoreCase("1")) { //渲染网页的任务 }

  • 检查您的自定义视图客户端类。

【讨论】:

  • 都是不同的url,第一个“a url”url加载有什么原因吗?
  • 是的,因为它在if 语句之外,正如我在评论中所说的那样,它永远不会起作用。
  • 您是否在此处获得了编辑文本值 (String lid = idbox.getText().toString();) 如果 lid 值为 null,则您无法根据 EditText 值动态加载网页。
  • **加载第一个“a url”网址是否有原因? ** 因为您的 ("a url") 网页加载代码在 onCreate() 方法内,所以第一个 url 加载得很好,您确实在 onCreate() 方法之外编写了其他三个加载 url 代码,所以它们没有渲染网页。此外,您没有正确声明,初始化和定义变量和函数(onClick(View v)),因此发生了运行时错误。我确实在下面添加了更新的代码。
【解决方案2】:

没关系,你写的 onClick() 方法定义是错误的!

我很困惑,因为,

  • 您是否一直在为 xml 中的按钮添加 onclick(android:onClick="onClick") 函数。

    尽管我对你的代码做了一些改动,

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2" >

    <EditText
        android:id="@+id/urlValue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:layout_weight="1.5" />

    <Button
        android:id="@+id/urlBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:layout_weight="0.5" 
        android:text="load"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

MainActivity.java:

public class MainActivity extends Activity {

private EditText getUrlValue;
private Button loadUrl;
private WebView webView;
String loadId = "";
String URL_ONE = "a_url";
String URL_TWO = "b_url";
String URL_THREE = "c_url";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    getUrlValue = (EditText)findViewById(R.id.urlValue);
    loadUrl = (Button)findViewById(R.id.urlBtn);
    webView = (WebView)findViewById(R.id.webView);
    
    //initial view for webView
    getUrlValue.setText("1"); //here web page will load first url= "a url"
    
    webView.setWebViewClient(new OurViewClient());
    
    //onClick Event for load url button
    loadUrl.setOnClickListener(new View.OnClickListener() {
        
        @Override
        public void onClick(View v) {
        
            loadId = getUrlValue.getText().toString();
            if(loadId.equalsIgnoreCase("1")){
                try{
                    
                    webView.loadUrl(URL_ONE);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
            }
            else if(loadId.equalsIgnoreCase("2")){
                try{
                    webView.loadUrl(URL_TWO);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                
            }
            else{
                try{
                    webView.loadUrl(URL_THREE);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
           }
        }
       });
        
    }
 }
  • 记得在清单 xml 文件中添加互联网权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多