处理程序是抽象的,不能被实例化
我正在尝试在我的应用程序中使用Handler
程序。 但是当我像这样实例化它:
Handler handler = new Handler();
我得到以下错误。
Gradle: error: Handler is abstract; cannot be instantiated
而当我检查解决scheme,它要求我实施这些方法:
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)
请帮忙! 提前致谢。
看来你已经导入了一个错误的Handler类
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) { } };
它会给出错误的布尔发现的东西像错误,所以要么使用布尔处理程序=新的处理程序()…或简单地使用(新的处理程序()){….`
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(); }; } }
导入android.os.Handler; 这个处理程序需要你的purpous。 在导入Handler类之前,请尝试导入上述内容。
Android SDK自动导入不正确的一个。 这就是为什么人们有问题。