**已关闭。**此问题需要debugging details。目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
昨天就关门了。
Improve this question的
(无法删除此问题...请不要介意错误的问题)
我有一个侦听器的公共静态数组列表,在每个活动中,我都在列表中添加一个新的侦听器,当我迭代调用列表中的每个侦听器时,没有一个活动得到remove调用,有人能告诉我我做错了什么吗?
(很抱歉英语不好...)
监听程序MealsListListener.class
public interface MealsListListener {
void onMealAdded(Meal meal, int babyID);
void onMealRemoved(Meal meal);
void onMealChanged(Meal meal);
}
字符串
数组列表MealListListeners.class
public class MealListListeners {
ArrayList<MealsListListener> mealsListListeners = new ArrayList<>();
public MealListListeners() {
}
public void addMealsListListener(MealsListListener mealsListListener) {
this.mealsListListeners.add(mealsListListener);
}
public void onMealAdded(Meal meal, int babyID) {
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealAdded(meal, babyID);
}
}
public void onMealRemoved(Meal meal){
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealChanged(meal);
}
}
public void onMealChanged(Meal meal) {
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealRemoved(meal);
}
}
}
型
活动MainActivity.class
public class MainActivity extends AppCompatActivity {
public static MealListListeners mealListListeners = new MealListListeners();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mealListListeners.addMealsListListener(new MealsListListener() {
@Override
public void onMealAdded(Meal meal, int babyID) {
Toast.makeText(getApplicationContext(), "onMealAdded", Toast.LENGTH_SHORT).show();
}
@Override
public void onMealRemoved(Meal meal) {
Toast.makeText(getApplicationContext(), "onMealRemoved", Toast.LENGTH_SHORT).show();
}
@Override
public void onMealChanged(Meal meal) {
Toast.makeText(getApplicationContext(), "onMealChanged", Toast.LENGTH_SHORT).show();
}
});
}
}
型
从DialogMeal.class
中的对话框调用
public class DialogMeal extends BottomSheetDialog {
public DialogMeal(@NonNull Context context, Meal meal) {
super(context);
addNewMeal(meal);
saveMealChanges(meal);
removeMealAction(meal);
}
public void addNewMeal(Meal meal) {
MainActivity.mealListListeners.onMealAdded(meal, 0);
}
private void saveMealChanges(Meal meal) {
MainActivity.mealListListeners.onMealChanged(meal);
}
private void removeMealAction(Meal meal) {
MainActivity.mealListListeners.onMealRemoved(meal);
}
}
型
1条答案
按热度按时间nhjlsmyf1#
当处理事件时,您调用了错误的方法
字符串