0

editText ボックスからデータを取得し、ボタンのクリックでその URL を開こうとしています。そのためには、あるインテントから別のインテントにデータを送信する必要があります。そのために、これこれを参照しましたが、データを送信できませんでした..メインからWebビューアクティビティにデータを送信しようとしています..

MainActivity.Java

public class MainActivity extends Activity {
Button b;

WebView mWebVIew2;
EditText mEdit;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    b = (Button) findViewById(R.id.button1);
    mEdit = (EditText) findViewById(R.id.editText1);
    final String s = mEdit.getText().toString();

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), mEdit.getText(), Toast.LENGTH_LONG).show();
            Intent i = new Intent(getApplicationContext(), WebViewActivity.class);
            i.putExtra("mSite", s);
            startActivityForResult(i, 0);
        }
    });

}

}

WebViewActivity.java

public class WebViewActivity extends Activity {
private WebView mWebView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webv);
    mWebView = (WebView) findViewById(R.id.webView1);
    Intent mIntent = getIntent();
    String y = mIntent.getExtras().getString("mSite");

    Toast.makeText(getApplicationContext(), y, Toast.LENGTH_LONG).show();

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl(y);

}

}
4

1 に答える 1

1

文字列sは、onCreateでmEdit.getTextとして定義されます。ボタンをクリックしたときのeditTextの内容は反映されません。

代わりにs、onClickメソッドでの値をフェッチします。

編集

詳細:Javaでは、Stringオブジェクトは不変です。ポインタは別の参照を指している場合がありますが、参照を変更(つまりミュート)することはできません。

この場合、これは、StringがEditTextの値を反映することはできず、特定の時点でのコピーのみを反映できることを意味します。この特定のシナリオでは、String sには、起動時(onCreate内)のeditTextのコンテンツが含まれています。これには、ほとんどの場合、何も含まれていないか、デフォルト値が含まれています。

于 2012-12-03T15:50:00.880 に答える