我对编程很新,只是尝试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>
非常感谢所以我不能把这个幽灵弄出来,我的知识无法让我更进一步。
答案 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)