2016-08-02 6 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 중 하나와 '스위치'를 사용하면 충돌이 발생합니다.

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

내가 자바와 안드로이드 프로그래밍에 새로 온 사람이다 :

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

} 

문제

는 다음과 같습니다. 이 문제를 해결할 수 있습니까? 왜 '버튼'이 아니라 '전환'이 아닌지 이해할 수 없다.

내가 내 코드를 복사 일식으로하려고 미리

UPDATE

에 감사드립니다. 모든 것이 잘 작동합니다. 내가 원하는 빛을 켜고 끌 수 있고 오류가 없다. android studio로 작동하지 않았습니다. 누군가 이유를 알아?

+0

stacktrace를 게시 할 수 있습니까? – Paras

+0

@pArAs uncaughtException java.lang.RuntimeException : doInBackground()를 실행하는 동안 오류가 발생했습니다. stacktrace를 가지고있다 – kai

+0

일반적인 catch 블록을 추가하고 예외를 출력한다. catch (최종 Exception e) {StackTraceElement trace [] = e.getStackTrace(); (StackTraceElement aTrace : trace) { Log.e (LOG_TAG, aTrace.toString()); }} – W0rmH0le

답변

1

Eclipse에서 ToggleButton 및 스위치로 시도했습니다. 모두 잘 작동합니다. 나는 안드로이드 스튜디오에서 사용한 것을 정확히 넣었습니다. 변경없이 모든 코드를 복사합니다. 문제를 이해할 수 없습니다.

1

마지막으로 문제가 있음을 발견했습니다. MainActivity에서 2 번들을 사용하고 SecondActivity에서 내 AsyncTask에 대해 doInBackground에서이 2 번들을 사용합니다. 하지만 SecondActivity에 첫 번째 번들을 전달하고 두 번째 번들을 전달하는 것을 잊어 버립니다. 그래서 doInBackground()를 실행하는 동안 오류가 발생했습니다. 내가 만든 바보 같은 실수 ...

관련 문제