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

これを試して:

@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 に答える
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 に答える