DrawerLayout onDrawerClosed() 调用两次
DrawerLayout onDrawerClosed() calling twice
我将菜单抽屉用作清单,onDrawerClosed 取决于 int 值是否会向用户收费以保存更改。但是 onDrawerClosed 方法调用了两次,一次使用 int 和正确的值,一次使用 int 和 0 值?这导致我的程序同时调用 if 和 else 语句,以便保存更改并提示他们付款。
//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
确保您只调用了一次 addDrawerListener()
,因为它“add"s a listener, not "set”s.
也就是说,请确保您从 activity 的 onCreate()
调用该代码(或 Fragment
的类似回调)。否则,如果您从 onStart()
或 onResume()
执行它,那么您将在每次调用这些回调时添加一个新的侦听器。
我将菜单抽屉用作清单,onDrawerClosed 取决于 int 值是否会向用户收费以保存更改。但是 onDrawerClosed 方法调用了两次,一次使用 int 和正确的值,一次使用 int 和 0 值?这导致我的程序同时调用 if 和 else 语句,以便保存更改并提示他们付款。
//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
确保您只调用了一次 addDrawerListener()
,因为它“add"s a listener, not "set”s.
也就是说,请确保您从 activity 的 onCreate()
调用该代码(或 Fragment
的类似回调)。否则,如果您从 onStart()
或 onResume()
执行它,那么您将在每次调用这些回调时添加一个新的侦听器。