Android프로그래밍

[Android:JAVA] onBackPressed() Deprecated에 따른 대응책 해결방법

안드로이드 앱 개발시 TargetSdk 버전을 34로 올리는 경우, onBackPressed()를 더이상 액티비티에서 사용할 수 없게되었다. 동일한 기능을 구현하기 위해서는 onCreate()에서 getOnBackPressedDispatcher() 메소드를 선언해주고 callBack메소드를 구현하여 처리하면 된다.

코틀린 말고, 자바에서 onBackPressed() Deprecated 대응 방법

AS-IS

    @Override
    public void onBackPressed() {

        LinearLayout linearLayout3 = (LinearLayout) exitDialog.findViewById(R.id.linearLayout3);
        linearLayout3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.linearLayout3) {
                    exitDialog.dismiss();
                }
            }
        });

        LinearLayout linearLayout4 = (LinearLayout) exitDialog.findViewById(R.id.linearLayout4);
        linearLayout4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.linearLayout4) {
                    exitDialog.dismiss();
                    finish();
                }
            }
        });

        exitDialog.show();

    }

TO-BE

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    .....생략.......

    //onBAckPressed : deprecated 대응
    getOnBackPressedDispatcher().addCallback(this, callback);
}
//콜백 생성
OnBackPressedCallback callback = new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            LinearLayout linearLayout3 = (LinearLayout) exitDialog.findViewById(R.id.linearLayout3);
            linearLayout3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (v.getId() == R.id.linearLayout3) {
                        exitDialog.dismiss();
                    }
                }
            });

            LinearLayout linearLayout4 = (LinearLayout) exitDialog.findViewById(R.id.linearLayout4);
            linearLayout4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (v.getId() == R.id.linearLayout4) {
                        exitDialog.dismiss();
                        finish();
                    }
                }
            });

            exitDialog.show();
        }
    };
error: Content is protected !!