当前位置: 首页 > 知识库问答 >
问题:

从其他活动中删除片段

太叔富
2023-03-14

当我创建时,我需要从另一个活动中删除一个片段,而不是创建它的活动:

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

然后我可以从片段中访问另一个活动,假设片段中有一个按钮可以打开另一个活动,现在,停留在该活动中我想删除启动该活动的片段,我得到该片段的参考号通过意图。所以我尝试:

        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/河马。rggmiranda。hiposleep E/AndroidRuntime:致命异常:主java。android上的lang.NullPointerException。应用程序。回溯记录。在android上运行(backbackrecord.java:651)。应用程序。碎片管理。android上的ExependingActions(FragmentManager.java:1435)。应用程序。FragmentManagerImpl 1美元。在android上运行(FragmentManager.java:441)。操作系统。处理程序。android上的handleCallback(Handler.java:725)。操作系统。处理程序。android上的dispatchMessage(Handler.java:92)。操作系统。活套。android上的loop(Looper.java:137)。应用程序。活动线程。java上的main(ActivityThread.java:5185)。郎。反思。方法java上的InvokEnable(本机方法)。郎。反思。方法在com上调用(Method.java:511)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:797)。Android内部的操作系统。合子岩。dalvik的main(ZygoteInit.java:564)。系统国家艺术。主(本机方法)

我真的很感激任何帮助!

共有1个答案

范建华
2023-03-14

你可以这样做:

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

如果有效,请告诉我。

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

如果我的答案不起作用,试试这个。

 类似资料:
  • 我有3个活动A、B和C。A导致B,B导致C。我希望能够在A和B之间来回移动,但我希望在C开始后完成A和B。我知道如何在通过意图启动C时关闭B,但在启动C时如何关闭A?

  • 如何从堆栈中弹出特定片段,并从片段中删除其他片段?例如,这些是我的片段,我现在在E right know。 A- 想从E回到B,清除C和D。我怎么能做到这一点?

  • 问题内容: 有人知道如何从其他活动中关闭一个活动吗?例如:我有3个活动(活动A,B和C),并且可以从活动C中关闭活动A。我的活动结构是活动A->活动B->活动C如何从中关闭活动A活动C? 我曾尝试此代码: 但是该代码只能关闭活动B的活动A,而不能直接关闭活动C的活动A。 有谁知道直接从其他活动关闭活动?谢谢.. 问题答案:

  • 我有这个actionlistener添加到一个按钮: 这是jPanel和jbutton的代码: 我怎样才能让它删除jframe的所有组件,除了名为buttonPanel的jpanel?

  • 问题内容: 我想从其他活动中调用主要活动中的公共方法。我怎样才能做到这一点? 问题答案: 这取决于。 在这种情况下,如果您只想使用某些共享功能(例如执行一些计算的代码)。 我建议将此共享功能移至某些独立的类,然后从那里进行调用。 在这种情况下,如果您想调用MainActivity,则MainActivity使用MainActivity UI进行了某些操作,则您必须使用Intent(http://d

  • 好吧,所以我有点困惑该怎么处理这个。因此,我有了主活动,从那里可以启动一个活动到DegreePlan活动,从那里可以启动另一个活动到EditDegreeplan。我已经将EditDegreeplan设置为在Android清单中没有历史记录。问题是在他们保存EditDegreeplan后,它会启动一个活动到Degreeplan。因此,如果用户按下后退键,他们必须按两次才能再次进入主活动。我想摆脱它,