Porównaj ceny domen i usług IT, sprzedawców z całego świata

Handler jest abstrakcyjny, nie można go utworzyć


Próbuję użyć
Handler
w mojej aplikacji. Ale kiedy tworzę to w ten sposób:
Handler handler = new Handler();

Otrzymuję następujący błąd.
Gradle: error: Handler is abstract; cannot be instantiated

A kiedy sprawdzam rozwiązania, prosi mnie o zaimplementowanie tych metod:
Handler handler = new Handler() {
@Override
public void close() { } @Override
public void flush() { } @Override
public void publish(LogRecord record) { }
};

Nigdy wcześniej nie korzystałem z
Handlerów
i używam go tylko do wywoływania metody po pewnym opóźnieniu. Aby to osiągnąć, użyłem:
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
}
}, 100);

Ale to pokazuje błąd:
Gradle: error: cannot find symbol method postDelayed(<anonymous Runnable>,int)

Proszę pomóż!
Z góry dziękuję.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wygląda na to, że zaimportowałeś niewłaściwą klasę modułu obsługi
import java.util.logging.Handler;

Zmień to na
import android.os.Handler;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Na miejscu
import java.util.logging.Handler;

Dodaj
import android.os.Handler;

także jeśli używasz
Handler handler = new Handler() {
@Override
public void close() { } @Override
public void flush() { } @Override
public void publish(LogRecord record) { }
};

to da błąd, że boolean znalazł coś takiego jak błąd, więc albo użyj boolean handler = new Handler () ...
lub po prostu użyj (new Handler ()) {.... `
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Automatyczne importowanie zestawu SDK systemu Android jest nieprawidłowe. Dlatego ludzie mają problemy.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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 ("Przesłane pliki:" + 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();
};
}
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

import android.os.Handler;
to jest program obsługi, którego potrzebujesz do swojego celu. Przed zaimportowaniem klasy obsługi, spróbuj zaimportować powyższe.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wygląda na to, że zaimplementowałeś niewłaściwą klasę obsługi
import java.util.logging.Handler;
Zmień to na

import android.os.Handler;

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się