Android开发:getStringExtra返回NULL,请求技术协助
解决Intent getStringExtra返回NULL的问题
这个问题的根源其实特别明显——你颠倒了startActivity(intent)和intent.putExtra()的调用顺序!
当你调用startActivity(intent)时,系统已经把当前状态的Intent发送给目标Activity了,之后再调用intent.putExtra()添加的参数根本不会被同步过去,所以第二个Activity自然拿不到任何值,只会返回NULL。
修正后的第一个Activity代码:
final String countryName = name.getText().toString(); wikiButton.setText("WIKI "+ countryName); wikiButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(CountryDetails.this, WikiDetail.class); // 先把参数放入Intent,再启动Activity intent.putExtra("countryNameKey", countryName); startActivity(intent); } });
第二个Activity的代码可以保留,但建议加空值判断避免崩溃:
WebView wikiWeb = (WebView) findViewById(R.id.wikiWeb); wikiWeb.setWebViewClient(new WebViewClient()); String countryName = getIntent().getStringExtra("countryNameKey"); // 防止countryName为null时拼接URL出错,做个兜底处理 if (countryName != null) { wikiWeb.loadUrl("https://en.wikipedia.org/wiki/" + countryName); } else { // 可以显示默认页面或者错误提示 wikiWeb.loadUrl("https://en.wikipedia.org/wiki/Main_Page"); }
核心原则就是:所有需要传递的参数,必须在启动Activity前添加到Intent中,这样参数才能被正确传递到目标页面。
内容的提问来源于stack exchange,提问作者田睿霖
相关产品推荐
相关产品推荐

