无法从一个意图发送数据到另一个 Android 意图。

14 浏览
0 Comments

无法从一个意图发送数据到另一个 Android 意图。

我试图从editText框中获取数据,并在按钮点击时打开该URL。为此,我必须从一个意图发送数据到另一个意图。为此,我参考了这个这个,但无法发送数据...我试图从主活动发送数据到网络视图活动。\nMainActivity.Java\n

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);
        }
    });
}
}

\nWebViewActivity.java\n

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);
}
}

0
0 Comments

问题的出现原因是,在onCreate方法中,String类型的变量s被定义为mEdit.getText(),它没有反映出当你点击按钮时editText的内容。相反,在onClick方法中获取s的值。

解决方法是,在onClick方法中获取editText的内容来更新s的值。这样,每次点击按钮时,s都会反映出当前editText的内容。

Java中,String对象是不可变的。指针可以指向不同的引用,但引用本身不会被改变。

在这种情况下,这意味着你的String s永远无法反映出EditText的值,只能反映出给定时间的副本。在这种特定的情况下,String s在启动时(在onCreate中)包含的是editText的内容,这可能是空或默认值。

那么为什么toast方法在按钮点击时会显示editText框的内容呢?因为在toast的情况下,你实际上获取的是editText的当前内容。

是的,我明白了。愚蠢的错误。

0