varias una sirve que puede para otra interfaces implementar extender clase abstracta java android android-handler

java - una - Handler es abstracto, no se puede instanciar



para que sirve una clase abstracta (5)

Android SDK auto importa el incorrecto. Es por eso que las personas tienen problemas.

Estoy tratando de usar un Handler en mi aplicación. Pero cuando lo instancia de esta manera:

Handler handler = new Handler();

Obtuve el siguiente error.

Gradle: error: Handler is abstract; cannot be instantiated

Y cuando verifico las soluciones, me pide implementar estos métodos:

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

Nunca antes he usado Handlers y lo estoy usando solo para llamar a un método después de un retraso. Para lograr eso, he usado:

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

Pero muestra el error:

Gradle: error: cannot find symbol method postDelayed(<anonymous Runnable>,int)

¡Por favor ayuda! Gracias por adelantado.


En lugar de

import java.util.logging.Handler;

añadir

import android.os.Handler;

también si usas

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

dará error que boolean encontró algo así como un error, así que use boolean handler = new Handler () ... o simplemente use (new Handler ()) {.... `


Parece que has importado una clase Handler incorrecta

import java.util.logging.Handler;

Cambiarlo a

import android.os.Handler;


importar android.os.Handler; este es el controlador necesario para tu propósito. Antes de importar la clase Handler, intente importar lo anterior.


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