0

我要输入的字符串的连接有问题。

这是课程:

package com.isma.multisitesearch.Siti;

import com.isma.multisitesearch.R;
import com.isma.multisitesearch.Webviews.GoogleWebView;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Google extends Activity implements OnClickListener {
    private String TAG_ACT = "Caricamento ricerca";
    public EditText googletext;
    private Button googlebutton;
    private String googleurl = "https://www.google.it/search?q=";
    public static String newgoogleurl;
    public String space = " ";

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.google);
        googletext = (EditText) findViewById(R.id.googletext);
        googlebutton = (Button) findViewById(R.id.googlebutton);
        googlebutton.setOnClickListener(this);
        newgoogleurl = googleurl + googletext.getText().toString();
        newgoogleurl.replaceAll(space, "%20");
        System.out.println(newgoogleurl);
    }

    @Override
    public void onClick(View v) {
        Log.v(TAG_ACT, "in corso");
        Intent intent = new Intent(Google.this, GoogleWebView.class);
        startActivity(intent);
    }
}

这就是WebView我想要得到连接的:

package com.isma.multisitesearch.Webviews;

import com.isma.multisitesearch.R;
import com.isma.multisitesearch.Siti.Google;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class GoogleWebView extends Activity {
    private WebView googlewebview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.googlewebview);
        googlewebview = (WebView) findViewById(R.id.googlewebview);
        googlewebview.getSettings().setJavaScriptEnabled(true);
        googlewebview.getSettings().setLoadsImagesAutomatically(true);
        googlewebview.setWebViewClient(new WebViewClient());
        googlewebview.loadUrl(Google.newgoogleurl);
    }
}

该应用程序运行良好,但是当我EditText在 google 中编写搜索文本时,我得到了主页,您可以在其中输入搜索而不是已经输入搜索文本的 url。

我希望你知道帮助我,在此之后我能够运行该应用程序。

4

4 回答 4

0

试试下面的代码:

String url;
url = googleurl+googletext.getText().toString();

if( url.contains(" ")){
    newgoogleurl=url.replaceAll(" ","%20");
}else{
    newgoogleurl=url;
}

这也包含验证部分。

于 2013-10-04T10:20:02.773 回答
0

字符串是不可变的。这意味着您不能修改 String 的实例,并且每次要修改它时都需要创建一个新实例。

在您的情况下,replaceAll不会修改您调用它的字符串,而是返回一个应用了您的修改的新字符串。

这就是为什么您需要将返回值影响到您的字符串的引用。

newgoogleurl = newgoogleurl.replaceAll(space, "%20");

此外,您应该阅读 的文档replaceAll,因为我认为它不能满足您的要求。您可能想使用replace.

于 2013-10-04T10:22:03.617 回答
0

注意

newgoogleurl.replaceAll(space, "%20");

没有效果,你需要编码:

newgoogleurl = newgoogleurl.replaceAll(space, "%20");

看看这里:

http://javarevisited.blogspot.it/2011/12/java-string-replace-example-tutorial.html

于 2013-10-04T10:12:57.907 回答
0

尝试这个:

@Override
public void onClick(View v) {
    newgoogleurl = googleurl + googletext.getText().toString();
    newgoogleurl = newgoogleurl.replaceAll(space, "%20");
    Log.v(TAG_ACT, "in corso");
    Intent intent = new Intent(Google.this, GoogleWebView.class);
    startActivity(intent);
}
于 2013-10-04T10:44:19.063 回答