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