【问题标题】:How to access a view of parent fragment from child fragment in navigation component如何从导航组件中的子片段访问父片段的视图
【发布时间】:2018-12-20 09:03:13
【问题描述】:

我需要从子片段访问父片段的视图。

我在片段(我的父片段)中有一个图表,我想从子片段访问父片段中存在的视图,我正在使用 android 导航组件,这让我有点困惑。

【问题讨论】:

  • 使用回调方法
  • @Himeshgoswami 喜欢做静态回调吗?
  • 假设 Fragment 1 实现了一个回调接口,并且子 Fragment 将具有该回调实例,然后您可以访问子 Fragment 中的 Fragment 1。
  • @Himeshgoswami 好的,我可以在我的 Activity 中创建一个接口,Fragment1 将实现它,Fragment2 可以使用 getActivity() 方法从 Activity 调用它,没关系,但我想直接从 Fragment2 访问视图。
  • 现在通过点击可以调用回调方法,并且可以根据需要更新视图。

标签: java android android-fragments android-architecture-navigation


【解决方案1】:

当我阅读您的解释时,您知道 ChildFragment Parent 是 NavHostFragment 而 NavHostFragment 的 Parent 是 ParentFragment。

NavHostFragment navHostFragment = (NavHostFragment) getParentFragment();
Fragment parent = (Fragment) navHostFragment.getParentFragment();
parent.getView().findViewById(R.id.element_id);

我尝试过的是我的演示项目和适合我的工作。

【讨论】:

  • 我尝试了很多答案,但这一个在 2022 年仍然有效。
【解决方案2】:

使用活动:

val buttonView = (context as Activity).findViewById<View>(R.id.map_list_card_view)

使用片段:

val parent: Fragment? = (parentFragment as NavHostFragment).parentFragment
val buttonView = parent?.view?.findViewById<View>(R.id.map_list_card_view)

【讨论】:

    【解决方案3】:

    试试这个:

    ParentFragment parent = (ParentFragment) getParentFragment();
    parent.getView().findViewById(R.id.your_element);
    

    【讨论】:

    • getParentFragment() 方法返回 NavHostFragment,而不是我的片段。
    • 我之前尝试过,但出现错误,androidx.navigation.fragment.NavHostFragment 无法转换为 alistar.navigation.fragments.DashboardFragment
    【解决方案4】:

    试试这个:

    public class Fragment2 extends Fragment {
        View view;
        ...
        ...
    
        public void setView(View view) {
            this.view = view;
        }
    }
    

    并在调用片段事务之前调用mFragment.setView()。我希望这会有所帮助!

    【讨论】:

    • 我知道,但我正在使用导航组件。
    • 这实际上很糟糕,因为发送视图作为参数会导致内存泄漏并导致内存不足异常
    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多