2017-04-11 2 views
-4

Asyn 작업을 시작할보기에서 긴 클릭 수신기를 설정했지만 충돌합니다. 같은 뷰에서 On Click Listener를 설정하고 이 제대로 작동하도록 설정했습니다. 내 코드는 아래와 같습니다 : 개인보기 빼기 버튼; 아래onLongClickListener가 충돌 함

AsyncTask repeatDecrement; 
boolean minusIsPressed=false; 

    public void decrementValue() 
     { 
      int currentValue=Integer.valueOf(valueTextView.getText().toString()); 


    if(currentValue>this.minValue)valueTextView.setText(String.valueOf(currentValue-1));  
    } 
    minusButton.setOnLongClickListener(new OnLongClickListener() 
     { 
      @Override 
      public boolean onLongClick(View v) 
      { 
       minusIsPressed=true; 
       repeatDecrement=new repeatDecrement(ValueSelector.this); 
       repeatDecrement.execute(); 
       return false; 
      } 

     }); 

    public static class repeatDecrement extends AsyncTask<Void, Void, Void> 
     { 
     ValueSelector object; 

     public repeatDecrement(ValueSelector object) 
     { 
      this.object=object; 
     } 
     public void onPreExecute() 
     { 

     } 

     public Void doInBackground(Void...voids) 
     { 
      while(object.minusIsPressed) 
       publishProgress(); 
       SystemClock.sleep(500); 
      return null; 
     } 

     public void onProgressUpdate(Void...voids) 
     { 
      object.decrementValue(); 
     } 

     public void onPostExecute(Void unsused) 
     { 

     } 

    } 

오류 로그 :

04-11 12:16:14.480: E/AndroidRuntime(24372): FATAL EXCEPTION: AsyncTask #1 
04-11 12:16:14.480: E/AndroidRuntime(24372): java.lang.RuntimeException: An error occured while executing doInBackground() 
04-11 12:16:14.480: E/AndroidRuntime(24372): at android.os.AsyncTask$3.done(AsyncTask.java:278) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.lang.Thread.run(Thread.java:856) 
04-11 12:16:14.480: E/AndroidRuntime(24372): Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[] 
04-11 12:16:14.480: E/AndroidRuntime(24372): at com.example.customviewgood.ValueSelector$repeatIncrement.doInBackground(ValueSelector.java:1) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
04-11 12:16:14.480: E/AndroidRuntime(24372): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
04-11 12:16:14.480: E/AndroidRuntime(24372): ... 5 more 
04-11 12:16:15.430: D/OpenGLRenderer(24372): Flushing caches (mode 0) 
04-11 12:16:17.830: D/OpenGLRenderer(24372): Flushing caches (mode 2) 
04-11 12:16:17.900: D/OpenGLRenderer(24372): Flushing caches (mode 0) 
+0

writestack – Vyacheslav

+2

오류 로그를 제공 할 수 있습니까? –

+0

포스트 오류 로그 .. – FAT

답변

0

나는 해결책을 찾아 냈다. onLongClick 이벤트에서 AsyncTask 객체를 생성하고있는 것을 보았습니다. 내 사용자 정의보기 이니셜 라이저에서 개체를 만들었습니다. 또한 while 루프 외부에서 SystemClock.sleep()을 호출했습니다.