处理程序是抽象的,不能被实例化

我正在尝试在我的应用程序中使用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自动导入不正确的一个。 这就是为什么人们有问题。