Обработчик является абстрактным,не может быть создан экземпляр



Я пытаюсь использовать 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)


пожалуйста, помогите!
Спасибо продвижение.

349   5  

5 ответов:

Кажется, вы импортировали неправильный класс обработчика

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 нашел что-то вроде ошибки, поэтому либо используйте boolean 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();
        };
    }
}

импорт android.ОС.Обработчик; это обработчик, необходимый для вашего целенаправленного. Перед импортом класса обработчика, пожалуйста, попробуйте импортировать выше.

Comments

    Ничего не найдено.