一切!我一直在搜索StackOverflow几个小时,但无法找到问题的解决方案。
我正在开发一个Android应用程序,需要通过EditText从一个活动中获取用户的输入(这恰好是一个int值)。然后,我需要将EditText的int值传递给第二个活动,并将其解析为一个url,以便在第二个活动中加载到webview中。但是,我无法让这个工作。事实上,我无法让我的WebView工作,甚至尝试加载像谷歌这样的网站。以下是我的代码。
public void takeInput(View view) {
Intent intent = new Intent(this, WebViewActivity.class);
EditText editText = (EditText) findViewById(R.id.editText);
Integer vendorID = Integer.parseInt(editText.getText().toString());
intent.putExtra(EXTRA_VENDORID, vendorID);
startActivity(intent);
上面是按下屏幕按钮OnClick时调用的方法。
下一个活动的代码如下。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
String testURL2 = "www.google.com";
WebView streetwiseSite = (WebView) this.findViewById(R.id.webView);
streetwiseSite.getSettings().setJavaScriptEnabled(true);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
String vendorID = extras.getString(MainActivity.EXTRA_VENDORID);
Integer vendorID = Integer.parseInt(extras.getString(MainActivity.EXTRA_VENDORID));
String targetURL = "www.something.org/purchase/";
这是我第一个活动的XML代码。
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@drawable/logo" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView"
android:layout_centerHorizontal="true"
android:text="MobilePay"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:hint="Vendor ID #"
android:inputType="number" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="72dp"
android:onClick="takeInput"
android:text="Pay" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_marginTop="34dp"
android:text="Enter Vendor ID and"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:text="Payment Amount to Pay"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
这是我的WebView活动的XML代码,第二个活动。
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.august.streetwise.WebViewActivity">
<WebView
android:id="@+id/webView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
理想情况下,这应该取用户的输入,将其解析为URL,然后加载该网站。但是,这是我从logcat获得的错误。
04-21 23:36:14.837 17904-17904 / com.myname.app W / BindingManager:无法调用determinVisibility() - 从未看到pid的连接:17904
有什么想法吗?我一直把头发拉过来。
答案 0 :(得分:2)
WebView.loadUrl()
不会在字符串的开头添加任何协议格式。因此,www.something.org
不会自动成为http://www.something.org
。
如果没有字符串开头的协议信息,WebView.loadUrl()
会抛出明显无用的错误W/BindingManager﹕ Cannot call determinedVisibility() - never saw a connection for the pid
,因为www.something.org
不是完整的网址。
你会认为这种行为会在某处记录下来。 ;)
答案 1 :(得分:0)
更改以下行
Intent intent = new Intent(this, WebViewActivity.class);
EditText editText = (EditText) findViewById(R.id.editText);
Integer vendorID = Integer.parseInt(editText.getText().toString());
Bundle bn=new Bundle();
bn.putInt(EXTRA_VENDORID, vendorID);
intent.putExtras(bn);
startActivity(intent);
在第二项活动中
setContentView(R.layout.activity_web_view);
String testURL2 = "www.google.com";
WebView streetwiseSite =(WebView) this.findViewById(R.id.webView);
streetwiseSite.getSettings().setJavaScriptEnabled(true);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
int vendorID = extras.getInt(MainActivity.EXTRA_VENDORID);
String targetURL = "www.something.org/purchase/";
并且要将此vendorid传递给url,您应该执行类似这样的操作
String targetURL = "www.something.org/purchase&KEYWORD="+vendorID;
nb:KEYWORD应该是您正在使用的网址的api端使用的确切字词
尝试在webview中加载网址
web.setWebViewClient(new WebViewClient());
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl(targetURL);