Handler is abstract ,cannot be instantiated

后端 未结 6 655
一向
一向 2020-12-07 13:03

I am trying to use a Handler in my app. But when i instantiate it like this:

Handler handler = new Handler();

I get the follow

相关标签:
6条回答
  • 2020-12-07 13:21

    In Place Of

    import java.util.logging.Handler; 
    

    add

    import android.os.Handler;
    

    also if you use

    Handler handler = new Handler() {
        @Override
        public void close() {
    
        }
    
        @Override
        public void flush() {
    
        }
    
        @Override
        public void publish(LogRecord record) {
    
        }
    };
    

    it will give error that boolean found somthing like error so either use boolean handler = new Handler()... or simply use (new Handler()){....`

    0 讨论(0)
  • 2020-12-07 13:22

    It seems you have imported a wrong Handler class

    import java.util.logging.Handler;
    

    Change it to

    import android.os.Handler;
    
    0 讨论(0)
  • 2020-12-07 13:22

    Android SDK auto imports the incorrect one. That's why people have problems.

    0 讨论(0)
  • 2020-12-07 13:24

    import android.os.Handler; this the handler needed for your purpous. Before importing the Handler class please try to import the above.

    0 讨论(0)
  • 2020-12-07 13:36
        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();
            };
        }
    }
    
    0 讨论(0)
  • 2020-12-07 13:40

    It seems like you have implemented the wrong Handler class

    import java.util.logging.Handler;

    Change it to

    import android.os.Handler;

    0 讨论(0)
提交回复
热议问题