Handler
내 앱에서 사용하려고합니다 . 하지만 다음과 같이 인스턴스화하면 :
Handler handler = new Handler();
다음과 같은 오류가 발생합니다.
Gradle: error: Handler is abstract; cannot be instantiated
그리고 솔루션을 확인할 때 다음 방법을 구현하도록 요청합니다.
Handler handler = new Handler() {
@Override
public void close() {
}
@Override
public void flush() {
}
@Override
public void publish(LogRecord record) {
}
};
나는 Handlers
전에 사용한 적이 없으며 약간의 지연 후에 메서드를 호출하는 데 사용하고 있습니다. 이를 달성하기 위해 다음을 사용했습니다.
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
}
}, 100);
그러나 오류가 표시됩니다.
Gradle: error: cannot find symbol method postDelayed(<anonymous Runnable>,int)
도와주세요! 미리 감사드립니다.
답변
잘못된 핸들러 클래스를 가져온 것 같습니다.
import java.util.logging.Handler;
다음으로 변경
import android.os.Handler;
답변
대신에
import java.util.logging.Handler;
더하다
import android.os.Handler;
또한 사용하는 경우
Handler handler = new Handler() {
@Override
public void close() {
}
@Override
public void flush() {
}
@Override
public void publish(LogRecord record) {
}
};
boolean이 error와 같은 것을 발견했다는 오류가 발생하므로 boolean handler = new Handler () …를 사용하거나 단순히 (new Handler ()) {….`를 사용하십시오.
답변
Android SDK는 잘못된 것을 자동으로 가져옵니다. 그래서 사람들은 문제가 있습니다.
답변
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();
};
}
}
답변
import android.os.Handler; 이것은 당신의 자줏빛에 필요한 핸들러입니다. Handler 클래스를 가져 오기 전에 위의 가져 오기를 시도하십시오.
답변
잘못된 Handler 클래스를 구현 한 것 같습니다.
import java.util.logging.Handler;
다음으로 변경
import android.os.Handler;