2017-04-11 3 views
-4

Asynタスクを開始するビューでOn Long Click Listenerを設定しましたが、それはクラッシュします( )。私は同じビューで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()を呼び出していました。

関連する問題