2
체크리스트로 메뉴 서랍을 사용하고 int 값에 따라 onDrawerClosed를 사용하여 사용자에게 비용을 청구하거나 변경 사항을 저장하지 않습니다. 그러나 onDrawerClosed 메서드는 int와 올바른 값으로 한 번, int와 0의 값으로 한 번씩 두 번 호출합니다. 이로 인해 내 프로그램에서 if 및 else 문을 호출하여 변경 사항을 저장하고 지불하라는 메시지가 표시됩니다.DrawerLayout onDrawerClosed() 두 번 호출
//Used so that when drawer closed banned list saves
public void drawerListener(){
mDrawer.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
@Override
public void onDrawerOpened(View drawerView) {
customAdaptor.clearJustChanged();
}
@Override
public void onDrawerClosed(View drawerView) {
System.out.println("Cost of Changes:" + customAdaptor.getUserCostOfChange());
if (customAdaptor.getUserCostOfChange() > 0) {
getBuyAlert(customAdaptor.getUserCostOfChange());
customAdaptor.setUserCostOfChange(0);
}
else {
bannedList = customAdaptor.getBannedList();
databaseReference.child("BannedApps").setValue(bannedList);
}
}
@Override
public void onDrawerStateChanged(int newState) {
}
});}
Output:
10-26 01:30:40.346 23822-23822/com.shuffle.v01 I/System.out: Cost of
Changes:1000
10-26 01:30:40.450 23822-23822/com.shuffle.v01 I/System.out: Cost of
Changes:0
어디에서'drawerListener()'메소드를 호출 했습니까? – azizbekian
그게 다야! 신의 어리석은 실수는 시간 낭비로 유감입니다. 그것을 실현하지 않고 onCart로 대신 onStart에 넣었습니다. –