2016-08-02 133 views
0

我试图通过为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工作室,它没有工作。有人知道原因?

+0

你可以发布stacktrace – Paras

+0

@pArAs uncaughtException java.lang.RuntimeException:执行doInBackground()时发生错误, stacktrace – kai

+0

添加一个通用的catch块并打印异常。catch(final Exception e){StackTraceElement trace [] = e.getStackTrace(); (StackTraceElement aTrace:trace){ Log.e(LOG_TAG,aTrace.toString()); }} – W0rmH0le

回答

1

我在Eclipse中尝试使用ToggleButton和Switch。一切正常。我把我在android studio中使用的完全一样。我复制所有的代码没有任何改变。无法理解问题。

1

最后我找到了问题。我在MainActivity中使用了2个Bundle,我在SecondActivity中使用doInBackground中的这2个Bundle来处理我的AsyncTask。但我只是将第一个Bundle传递给SecondActivity,而我忘记传递第二个Bundle。所以我执行doInBackground()时出错,我做了什么愚蠢的错误...

相关问题