从片段中调用父母的活动

     2023-04-15     274

关键词:

【中文标题】从片段中调用父母的活动【英文标题】:Call parent's activity from a fragment 【发布时间】:2012-12-30 12:40:31 【问题描述】:

如果我在 Fragment 中,我如何调用父母的活动?

【问题讨论】:

通过调用 getActivity() 只需调用 getActivity(); 我做到了。但方法仍然不可见。 你应该使用 requireActivity() 而不是 getActivity() 【参考方案1】:

是的,正确的方法是调用 getActivity 并将其与父活动一起转换以访问其方法或变量((ParentActivityName)getActivity())

试试这个。

ParentActivityName 是父类名

【讨论】:

如果我们不知道名字怎么办?示例:我正在制作 sdk,其中包含所有片段。我不能要求 sdk 用户重命名他/她的活动。那么如何在不知道名字的情况下获得参考呢? 您希望如何使用该参考? 我明白了。我的用例是在库中制作 n 个片段并提供给商家。我不知道他们将在哪个 Activity 中使用片段。似乎制作一个接口,在 Activity 中覆盖它并从 Activity 中获取回调似乎是最佳实践,在我的场景中非常有帮助.. @kay 酷,就是这样! 它有内存泄漏的可能性吗?即使我没有存储对父 Activity 的任何引用?【参考方案2】:

2021 年更新

正如 cmets 中所说,Fragment#onAttach(Activity) is deprecated starting from API 23。而是:

@Override
public void onAttach(Context ctx) 
    super.onAttach(ctx);
    
    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try 
        // Only attach if the caller context is actually an Activity
        if (ctx instanceof Activity) 
          mCallback = (OnHeadlineSelectedListener) ctx;
        
     catch (ClassCastException e) 
          throw new ClassCastException(ctx.toString()
                + " must implement OnHeadlineSelectedListener");
    


原始答案

最合适的方法是让您的Activity 实现Interface 并使用监听器。这样Fragment 就不会与任何特定的Activity 绑定,从而保持可重复使用。进入Fragment

@Override
public void onAttach(Activity activity) 
    super.onAttach(activity);
    
    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try 
        mCallback = (OnHeadlineSelectedListener) activity;
     catch (ClassCastException e) 
        throw new ClassCastException(activity.toString()
                + " must implement OnHeadlineSelectedListener");
    

这样,当Activity 附加到片段时,您可以监听片段。

另请参阅:

http://developer.android.com/training/basics/fragments/communicating.html

【讨论】:

onAttach(Activity activity) 已弃用,请改用onAttach(Context context)【参考方案3】:

只需使用 getActivity() 方法调用您的父活动。

CardView cardView = (CardView) getActivity().findView(R.id.your_view);

【讨论】:

如何从另一个活动中调用片段

】如何从另一个活动中调用片段【英文标题】:Howtocallafragmentfromanotheractivity【发布时间】:2015-06-1722:21:16【问题描述】:我想从另一个扩展ActionBarActivity或Activity的活动中调用片段我想让它像有意图地从另一个活动中打开一个活... 查看详情

从活动中调用片段方法

】从活动中调用片段方法【英文标题】:Callingfragmentmethodfromactivity【发布时间】:2013-10-2011:36:41【问题描述】:我的项目ViewPage中有一个带有两个片段(FragmentView1和FragmentView2)。这是我的ViewPageMainActivity,它有一个带有菜单的Act... 查看详情

如何从主要活动中调用片段方法

】如何从主要活动中调用片段方法【英文标题】:Howtocallfragmentmethodfrommainactivity【发布时间】:2016-06-1507:31:12【问题描述】:我在片段类中有方法。我想从主要活动中调用该方法,但我不想使用FragmentById(或)FragmentByTag。我的... 查看详情

如何从Android中没有活动和片段的函数调用DialogFragment?

】如何从Android中没有活动和片段的函数调用DialogFragment?【英文标题】:HowtoinvokeDialogFragmentfromfunctionwhichisoutofactivityandfragmentinAndroid?【发布时间】:2020-09-2512:02:22【问题描述】:我有一个名为Dialog的DialogFragment。如何从Android中没... 查看详情

从片段内部调用活动方法[重复]

】从片段内部调用活动方法[重复]【英文标题】:CallingActivityMethodFromInsideAFragment[duplicate]【发布时间】:2013-11-1215:36:03【问题描述】:我正在尝试从片段屏幕调用活动中的方法。我有一个名为myMethod()的方法,它位于名为MyActivity... 查看详情

从android中的活动调用片段

】从android中的活动调用片段【英文标题】:Callfragmentfromactivityinandroid【发布时间】:2014-09-0123:32:14【问题描述】:我目前正在处理使用过的片段中的项目。但是在这里,当我从Fragment调用活动类时,它运行良好。我要做的是在Bac... 查看详情

从片段调用活动方法

】从片段调用活动方法【英文标题】:Callanactivitymethodfromafragment【发布时间】:2012-09-2112:05:18【问题描述】:尝试从片段调用我的活动中的方法。我希望片段提供方法数据并在方法返回时获取数据。我想实现类似于调用静态方法... 查看详情

Android:从片段调用活动

】Android:从片段调用活动【英文标题】:Android:CallingActivityfromFragment【发布时间】:2012-09-2004:50:42【问题描述】:我在活动中使用片段。我正在使用MediaRecorder进行录音。我有一个活动的两个部分。第一个本身将列出记录文件的... 查看详情

如何从活动中调用片段方法?

】如何从活动中调用片段方法?【英文标题】:Howtocallfragmentsmethodfromactivity?【发布时间】:2021-12-2301:25:38【问题描述】:我希望每个人都做得很好,我是一名初学者级别的Android开发人员,我正在制作一个计数器Android应用程序,... 查看详情

从意图活动访问片段方法(代码片段)

我有一个片段,我从片段开始一个活动。现在我想从新活动中的片段调用一个方法。我试图使用接口,但似乎我不能,因为我不在片段中创建一个新活动的对象,让它调用setListener()。我正在使用意图启动新活动。我无法找到如... 查看详情

如何从android中的活动调用片段方法?

】如何从android中的活动调用片段方法?【英文标题】:Howtocallafragmentmethodfromanactivityinandroid?【发布时间】:2016-10-1105:45:36【问题描述】:我的主活动上有一个选项卡式视图和一个浮动操作按钮。每当我单击浮动操作按钮时,我... 查看详情

从 dialogfragment 调用 onBackPressed 完成活动

...布时间】:2022-01-0700:16:13【问题描述】:我有一个对话框片段,上面有一个关闭按钮。这个对话框是从两个不同的活动中调用的。一种将其用作简单片段,另一种用作对话片段。在它的onClick方法中,我调用了requireAct 查看详情

Android:从片段调用时如何从活动中获取返回结果?

】Android:从片段调用时如何从活动中获取返回结果?【英文标题】:Android:HowtogetreturnresultfromactivitywhencallingfromFragment?【发布时间】:2013-09-2709:18:29【问题描述】:我有一个Fragment使用以下方式调用另一个Activity:ProductEditionMainten... 查看详情

从活动中设置片段的参数

】从活动中设置片段的参数【英文标题】:Setargumentsoffragmentfromactivity【发布时间】:2013-08-1001:19:33【问题描述】:我想将我的活动中的参数传递给嵌入到活动中的片段。片段静态嵌入在xml布局中。我尝试这样调用setArgument():setC... 查看详情

从活动中设置片段的参数

】从活动中设置片段的参数【英文标题】:Setargumentsoffragmentfromactivity【发布时间】:2013-08-1001:19:33【问题描述】:我想将我的活动中的参数传递给嵌入到活动中的片段。片段静态嵌入在xml布局中。我尝试这样调用setArgument():setC... 查看详情

活动到片段通信:当我尝试从活动更新片段中的文本视图时,出现空指针异常

】活动到片段通信:当我尝试从活动更新片段中的文本视图时,出现空指针异常【英文标题】:ActivitytoFragmentCommunication:WhenItriedtoupdatetextviewinfragmentfromactivityamgettingnullpointerexception【发布时间】:2021-02-1422:05:11【问题描述】:我... 查看详情

无法在角度 6 中访问从父母到孩子的方法

...法获取另一个父方法,该方法在我用作输入并在子组件中调用的父方法中调用。exportclassTreeMapComponentdata;constructor(publicdialog:MatDialog,privaterou 查看详情

如何将字符串数据从活动发送到片段?

】如何将字符串数据从活动发送到片段?【英文标题】:HowcanIsendstringdatafromactivitytofragment?【发布时间】:2021-01-0401:45:27【问题描述】:我有模块化应用程序。它的“app”模块有一个片段,它在不同的模块中调用活动。然后使用... 查看详情