【发布时间】:2018-01-05 14:32:19
【问题描述】:
当我将一个变量从一个活动传递到另一个活动时,一切正常,但是 当我退出应用并重新打开它时,应用会崩溃。
我认为这行代码从以前的活动中获取变量。
String codice = intent.getExtras().getString("idinput");
我尝试使用这样的固定变量进行测试,应用程序没有崩溃。
String codice = "value";
这是完整的代码:
@Override
protected String doInBackground(Void... voids) {
try {
Intent intent = getIntent();
String codice = intent.getExtras().getString("idinput");
Uri.Builder urlBuilder = new Uri.Builder();
urlBuilder.scheme("http");
urlBuilder.authority("myaddress");
urlBuilder.appendEncodedPath("file.php");
urlBuilder.appendQueryParameter("value", codice);
URL url = new URL(urlBuilder.build().toString());
HttpURLConnection con = (HttpURLConnection) url.openConnection();
StringBuilder sb = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String json;
while ((json = bufferedReader.readLine()) != null) {
sb.append(json + "\n");
}
return sb.toString().trim();
} catch (Exception e) {
return null;
}
}
变量取自的先前活动:
Intent i = new Intent(ControlloCodice.this, Visualizza.class);
i.putExtra("idinput", inputname);
startActivity(i);
解决了这个问题
Intent intent = getIntent();
String codice = intent.getExtras().getString("idinput");
有了这个
String codice;
try {
codice = getIntent().getExtras().getString("idinput");
} catch (NullPointerException e ) {
codice = "";
}
【问题讨论】:
-
怎么崩溃了,是日志里的异常?
-
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int java.lang.String.length()”
-
查看堆栈跟踪并找出问题的确切位置,单元测试也不会受到伤害
-
但是如果我猜你用这个
catch掩盖了真正的异常并且返回了null并导致程序的另一部分出现问题,那么这不是处理问题的好方法例外,至少您应该记录消息,同时捕获广泛的Exception可能会导致问题 -
谢谢。解决了。我用解决方案更新答案。
标签: java android-studio