gpt4 book ai didi

android - 从另一个 Activity 中删除 fragment

转载 作者:行者123 更新时间:2023-12-02 17:12:12 29 4
gpt4 key购买 nike

当我创建时,我需要从另一个 Activity 而不是创建它的 Activity 中删除一个 fragment :

public FragmentManager fragmentManager = getSupportFragmentManager();


AlarmFragment frag = new AlarmFragment();
frag.setAlarmNumber(getAlarmsAmount());
getListaDeAlarmas().add(getAlarmsAmount(), frag);
fragmentManager.beginTransaction().add(R.id.alarmListContainer, getListaDeAlarmas().get(alarmsAmount), "Alarm" + String.valueOf(getAlarmsAmount())).commit();

然后我可以从 fragment 访问另一个 Activity ,假设 fragment 内有一个按钮可以打开另一个 Activity ,现在,停留在该 Activity 中我想删除启动该 Activity 的 fragment ,我得到一个引用通过 Intent 将该编号分配给该 fragment 。所以我尝试了:

        btDelete.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
getFragmentManager().beginTransaction().remove(getFragmentManager().findFragmentByTag("Alarm" + String.valueOf(alarmNumber))).commit();
}
});

但它给了我一个 nullPointerException,

03-07 22:42:33.270 30993-30993/thehippo.rggmiranda.hiposleep E/AndroidRuntime:致命异常:main java.lang.NullPointerException 在 android.app.BackStackRecord.run(BackStackRecord.java:651) 在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435) 在 android.app.FragmentManagerImpl$1.run(FragmentManager.java:441) 在 android.os.Handler.handleCallback(Handler.java:725) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:5185) 在 java.lang.reflect.Method.invokeNative( native 方法) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564) 在dalvik.system.NativeStart.main( native 方法)

我真的很感谢任何帮助!

最佳答案

你可以这样做:

btDelete.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Fragment fragment = getSupportFragmentManager().findFragmentByTag("Alarm" + String.valueOf(alarmNumber)));
if(fragment != null) getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}

让我知道它是否有效。

编辑

顺便问一下,您是否调试了这一行:"Alarm"+ String.valueOf(alarmNumber))来验证它是否是FragmentTag

如果我的答案不起作用,请尝试此 one .

关于android - 从另一个 Activity 中删除 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857518/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com