android studio:java.lang.RuntimeException:执行doInBackground()时发生错误
问题描述:
我试图通过为KNX使用calimero库来制作应用程序。在我的应用程序中,我使用一些按钮,开关,按钮等来打开/关闭灯光。使用'按钮',一切运作良好。我可以打开/关闭光线或打开/关闭窗帘。android studio:java.lang.RuntimeException:执行doInBackground()时发生错误
private class button9OnClickListener implements View.OnClickListener {
public void onClick(View view){
try {
falseTask dt = new falseTask();
String adr = "5/1/0";
dt.execute(adr);
} catch (Exception e) {
}
}
}
但是当我使用OnClickListener或OnCheckedChangeListenser的'Switch'时,它会崩溃。
private class switch1OnCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(compoundButton.isChecked()) {
try {
trueTask dt = new trueTask();
String adr = "5/4/6";
dt.execute(adr);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
falseTask dt = new falseTask();
String adr = "5/4/6";
dt.execute(adr);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
问题是下面:
uncaughtException java.lang.RuntimeException: An error occured while executing doInBackground()
,这里是我的doInBackground
protected String doInBackground(String...strings){
String adr = strings[0];
try {
final InetSocketAddress localEP = new InetSocketAddress(InetAddress.getByName(hostip), 0);
final InetSocketAddress remoteEP = new InetSocketAddress(remoteip, knxServerPort);
knxLink = new KNXNetworkLinkIP(KNXNetworkLinkIP.TUNNEL, localEP, remoteEP, true, TPSettings.TP1);
pc = new ProcessCommunicatorImpl(knxLink);
pc.write(new GroupAddress(adr), true);
knxLink.close();
}
catch (final KNXException e) {
}
catch (final UnknownHostException e) {
}
return null;
}
我是新来的Java和Android编程。你能帮助解决这个问题吗?我不明白为什么这个工作的'按钮',而不是'开关'。
预先感谢您
UPDATE
复制我的代码,并与日食尝试。一切工作正常。我可以打开/关闭我想要的灯,并且没有错误。 与Android工作室,它没有工作。有人知道原因?
答
我在Eclipse中尝试使用ToggleButton和Switch。一切正常。我把我在android studio中使用的完全一样。我复制所有的代码没有任何改变。无法理解问题。
答
最后我找到了问题。我在MainActivity中使用了2个Bundle,我在SecondActivity中使用doInBackground中的这2个Bundle来处理我的AsyncTask。但我只是将第一个Bundle传递给SecondActivity,而我忘记传递第二个Bundle。所以我执行doInBackground()时出错,我做了什么愚蠢的错误...
你可以发布stacktrace – Paras
@pArAs uncaughtException java.lang.RuntimeException:执行doInBackground()时发生错误, stacktrace – kai
添加一个通用的catch块并打印异常。catch(final Exception e){StackTraceElement trace [] = e.getStackTrace(); (StackTraceElement aTrace:trace){ Log.e(LOG_TAG,aTrace.toString()); }} – W0rmH0le