반응형
핸들러는 추상적이며 인스턴스화 할 수 없습니다.
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; this the handler needed for your purpous. Before importing the Handler class please try to import the above.
참고URL : https://stackoverflow.com/questions/19873063/handler-is-abstract-cannot-be-instantiated
반응형
'IT박스' 카테고리의 다른 글
Android SQLite : 업데이트 문 (0) | 2020.09.02 |
---|---|
십진수 정규식, 십진수 뒤의 숫자는 선택 사항입니다. (0) | 2020.09.02 |
Notepad ++-빈 줄을 어떻게 바꿀 수 있습니까? (0) | 2020.09.02 |
파이썬-파이썬에서 URL의 유효성을 검사하는 방법은 무엇입니까? (0) | 2020.09.02 |
Swift 3의 NotificationCenter 문제 (0) | 2020.09.02 |