如何将信息从一个活动的EditText传递到另一个活动,以便在新活动的WebView中加载网址?

时间:2015-04-22 05:09:29

标签: java android webview

一切!我一直在搜索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

有什么想法吗?我一直把头发拉过来。

2 个答案:

答案 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);