programing

핸들러가 추상적이므로 인스턴스화할 수 없습니다.

prostudy 2022. 9. 6. 21:32
반응형

핸들러가 추상적이므로 인스턴스화할 수 없습니다.

를 사용하려고 합니다.Handler내 앱에서.그러나 이렇게 인스턴스화하면:

Handler handler = new Handler();

다음의 에러가 표시됩니다.

그라들: 오류: 핸들러가 추상적이어서 인스턴스화할 수 없습니다.

또, 솔루션을 확인하면, 다음의 방법을 실장하도록 요구됩니다.

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);

그러나 다음과 같은 오류가 표시됩니다.

그라들: 오류: 기호 메서드 postDelayed(),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) {

    }
};

부울이 에러와 같은 것을 발견했다는 에러를 나타내므로, 부울 핸들러 = new Handler()... 또는 단순히 (new Handler(){...)를 사용합니다.`

Android SDK가 잘못된 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 java.util.logging.Handler;

로 변경하다

import android.os.Handler;

import Android.os.핸들러. 목적에 필요한 핸들러입니다.Handler 클래스를 Import하기 전에 위의 내용을 Import해 보십시오.

언급URL : https://stackoverflow.com/questions/19873063/handler-is-abstract-cannot-be-instantiated

반응형