【问题标题】:unable to send data from one intent to another Android无法将数据从一个意图发送到另一个 Android
【发布时间】:2012-12-03 15:45:45
【问题描述】:

我正在尝试从 editText 框中获取数据并在单击按钮时打开该 url。为此,我必须将数据从一个意图发送到另一个意图。为此,我参考了thisthis,但无法发送数据。我正在尝试将数据从主要活动发送到网络视图活动。

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

}

}

【问题讨论】:

  • define '无法发送数据'
  • (另外,您是否尝试过getStringExtra(),以防万一?)
  • 数据表示字符串。第一个活动从编辑文本中获取字符串并将其传递给第二个活动,以便该字符串可以用作 url,并且用户可以通过网页视图访问该网页
  • @njzk2 是的,我先尝试过.. 然后我尝试了这个
  • 我有一种感觉,我可能犯了非常幼稚的错误,但没有得到它

标签: android


【解决方案1】:

You String s 在 onCreate 中被定义为 mEdit.getText。当您单击按钮时,它不会反映 editText 的内容。

相反,在 onClick 方法中获取 s 的值。

编辑

进一步的细节:在 Java 中,String 对象是不可变的。指针可能指向不同的引用,但引用不能被更改(即静音)。

在这种情况下,这意味着您的 String 永远不能反映 EditText 的值,而只能是给定时间的副本。在这个特定场景中,String s 包含启动时(在 onCreate 中)的 editText 的内容,它很可能不包含任何内容或包含默认值。

【讨论】:

  • 那为什么 toast 方法会在按钮点击时显示编辑文本框的内容.. :?
  • 哦,对不起..我还没有看到..让我试试
  • 因为在吐司的情况下,你实际上得到的是editText的当前内容
  • 是的,我想到了。愚蠢的错误
猜你喜欢
  • 1970-01-01
  • 2015-07-11
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 2012-11-21
相关资源
最近更新 更多