如何使用用户提供的URL调用Web浏览器?

时间:2009-12-21 08:58:56

标签: android network-programming

我对编程很新,只是尝试Andorid。 我正在尝试创建一个简单的应用程序,询问用户的字符串后,我希望我的程序通过网络浏览器在互联网上出现。

但是我弄错了两件事,有一件事是我上网但我知道我选择了错误的方法,但另一件事是findViewById(R.id。)不起作用,我不明白为什么..

我的代码(来自http://pastebay.com/77559):

package team.ice.kth;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;

public class KTH extends Activity {
    private Button mButton;
    private EditText mClassInfo;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mClassInfo = (EditText) findViewById(R.id.ClassInfo);

        final Button mButton = (Button) this.findViewById(R.id.OK_Button);
        mButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                onGoTo();
            }
            private void onGoTo() {
                createUrl();
            }
            protected void createUrl() {
                String Class = mClassInfo.getText().toString();

                WebView webview = new WebView(this);
                setContentView(webview);
                webview.loadUrl("http://schema.sys.kth.se/4DACTION/WebShowSearch/2/1-0?wv_type=5&wv_category=0&wv_ts=20091220T015342X7921&wv_search=" + Class + "&wv_startWeek=935&wv_stopWeek=951&wv_first=0&wv_addObj=&wv_delObj=&wv_obj1=19498000&wv_graphic=Grafiskt+format");
            }
        });
    }
} 

和我的XML(来自http://pastebay.com/77560):

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget0"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <EditText
        android:id="@+id/class"
        android:layout_width="96px"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:layout_x="120px"
        android:layout_y="43px" />
    <TextView
        android:id="@+id/ClassInfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Class:"
        android:layout_x="62px"
        android:layout_y="58px" />
    <Button
        android:id="@+id/OK_Button"
        android:layout_width="47px"
        android:layout_height="39px"
        android:text="Sök"
        android:layout_x="237px"
        android:layout_y="52px" />
</AbsoluteLayout> 

非常感谢所以我不能把这个幽灵弄出来,我的知识无法让我更进一步。

4 个答案:

答案 0 :(得分:1)

findViewById()您试图从错误的View读取输入的问题。根据XML,您的EditText将被称为R.id.class,而不是R.id.ClassInfo(这是您的TextView)。您需要将代码修改为:

public class KTH extends Activity {
    private Button   mButton;
    private EditText mClass;      // this will be a handle to the editable text area
    private TextView mClassInfo;  // this will be a handle to the static text area which reads "Class:"

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mClassInfo = (TextView) findViewById(R.id.ClassInfo);  // 'ClassInfo' is a TextView in the XML
        mClass     = (EditText) findViewById(R.id.class    );  // 'class' is an EditText in the XML
        mButton    = (Button  ) findViewById(R.id.OK_Button);

        mButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                onGoTo();
            }
            private void onGoTo() {
                createUrl();
            }
            protected void createUrl() {
                String Class = mClass.getText().toString();

                WebView webview = new WebView(this);
                setContentView(webview);
                webview.loadUrl("http://schema.sys.kth.se/4DACTION/WebShowSearch/2/1-0?wv_type=5&wv_category=0&wv_ts=20091220T015342X7921&wv_search=" + Class + "&wv_startWeek=935&wv_stopWeek=951&wv_first=0&wv_addObj=&wv_delObj=&wv_obj1=19498000&wv_graphic=Grafiskt+format");
            }
        });
    }
} 

正如上面提到的那样,你应该找到其他东西(其他任何东西)将EditText命名为“class”以外的其他东西,但听起来你可能已经这样了。

关于网站没有加载,你能告诉我们它是如何失败的吗?出了什么问题?

答案 1 :(得分:0)

至于将用户引导到互联网,你想要的是什么? webview适合在应用程序中显示一段Web内容,但如果您只想从应用程序打开默认浏览器并将其指向URL,则可以使用此功能:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/"))); 

至于findViewById,它们看起来是正确的,你得到的是什么错误信息,或者如果没有,它是什么不适用于它?

如果R.id中不存在您所使用的ID,则main.xml可能会出现错误(实际上,我认为其他地方的错误可能会导致R无法正常处理也生成了),所以你可能想检查eclipse是否存在编译器错误。

请更详细地描述findViewById问题,您还可以向我们展示一些布局xml代码。

答案 2 :(得分:0)

按钮的问题(在评论中而不是上面的主要问题中)可能与您如何声明按钮两次有关。使用PasteBay中的数字,首先对第12行的按钮进行decalre,然后在运行findViewById时再次对26进行decalre。尝试摆脱第一个。如果这没有帮助,关于这个问题的更多细节可能会让人们比我更有经验(我也是初学者:p)找到问题。

答案 3 :(得分:0)

对于你的r.id.您在以下链接中遇到的问题:

对您有所帮助。

Here here