[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();
}
};