Le gestionnaire est abstrait, ne peut pas être instancié

J’essaie d’utiliser un Handler dans mon application. Mais quand je l’instancier comme ceci:

 Handler handler = new Handler(); 

Je reçois l’erreur suivante.

 Gradle: error: Handler is abstract; cannot be instantiated 

Et quand je vérifie les solutions, il me demande de mettre en œuvre ces méthodes:

 Handler handler = new Handler() { @Override public void close() { } @Override public void flush() { } @Override public void publish(LogRecord record) { } }; 

Je n’ai jamais utilisé Handlers auparavant et je l’utilise juste pour appeler une méthode après un certain délai. Pour y parvenir, j’ai utilisé:

 handler.postDelayed(new Runnable() { @Override public void run() { //Do something after 100ms } }, 100); 

Mais il montre l’erreur:

 Gradle: error: cannot find symbol method postDelayed(,int) 

S’il vous plaît aider! Merci d’avance.

Il semble que vous ayez importé une mauvaise classe Handler

 import java.util.logging.Handler; 

Le changer pour

 import android.os.Handler; 

Au lieu de

 import java.util.logging.Handler; 

append

 import android.os.Handler; 

aussi si vous utilisez

 Handler handler = new Handler() { @Override public void close() { } @Override public void flush() { } @Override public void publish(LogRecord record) { } }; 

il donnera l’erreur que booléen a trouvé quelque chose comme erreur donc soit utiliser boolean handler = new Handler () … ou simplement utiliser (new Handler ()) {…. `

Android SDK auto importe le incorrect. C’est pourquoi les gens ont des problèmes.

  import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; public class ActionActivity extends ActionBarActivity { final Ssortingng LOG_TAG = "myLogs"; TextView tvInfo; Button btnStart; Handler h; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.action_activity); tvInfo = (TextView)findViewById(R.id.tvinfo); btnStart = (Button)findViewById(R.id.btnstart); h = new Handler() { public void handleMessage(android.os.Message msg) { // update TextView tvInfo.setText("Закачано файлов: " + msg.what); if (msg.what == 10) btnStart.setEnabled(true); }; }; } public void onclick(View v) { switch (v.getId()) { case R.id.btnstart: btnStart.setEnabled(false); Thread t = new Thread(new Runnable() { public void run() { for (int i = 1; i < = 10; i++) { // some process downloadFile(); h.sendEmptyMessage(i); Log.d(LOG_TAG, "i = " + i); } } }); t.start(); break; case R.id.btnTets: Log.d(LOG_TAG, "test"); break; default: break; } } public void downloadFile(){ try{ TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e){ e.printStackTrace(); }; } } 

importer android.os.Handler; Ceci est le gestionnaire nécessaire pour votre purpous. Avant d’importer la classe Handler, essayez d’importer ce qui précède.