Fragment总结(二)

Fragment的含义,作用,生命周期,使用方法,Fragment管理请查看上篇文章Fragment总结(一)。这篇文章主要是介绍Activity和Fragment之间通信,Fragment和Fragment之间通信。

Activity和Fragment之间通信

1.Activity和Fragment互相调用各自的方法实现交互:
(1)在Activity中调用Fragment的方法:
通过getActivity()获取所附属的Activity,可以调用其相关方法。

DynamicAddActivity activity = (DynamicAddActivity) getActivity();
activity.showToast();

(2)在Fragment中调用Activity的方法:
通过FragmentManager获取相对应的Fragment,可以调用其相关方法。

if(oneFragment == null){
  oneFragment = new OneFragment();
  transaction.add(R.id.container, oneFragment);
} else {
  transaction.show(oneFragment);
}
oneFragment.showToast(DynamicAddActivity.this);

2.通过回调接口实现通信:
在Fragment中声明一些回调接口,当Fragment调用onAttach时,将这些回调接口实例化,Fragment可以调用各个activity的成员函数了,Activity必须implements这些接口,实现Activity和Fragment之间通信。
下面是一个非常简单的例子,以此来进行说明:
Fragment中定义一个接口实例化,点击按钮时调用:

@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one_fragment, null);
        one_fragment_btn = (Button)view.findViewById(R.id.one_fragment_btn);
        one_fragment_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {//点击按钮时调用回调方法
                Boolean flag = listener.callback("test");//调用接口
                if(flag){
                    Toast.makeText(getActivity(), "成功", Toast.LENGTH_LONG).show();
                }
            }
        });
        return view;
    }

    //回调接口
    public interface CallBackListener{
        boolean callback(String text);
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try{
            listener = (CallBackListener) context;//实例化接口
        } catch (ClassCastException e){

        }
    }

Activity中实现接口:

//实现回调接口
 @Override
    public boolean callback(String text) {
        if("test".equals(text)){
            return true;
        }
        return false;
    }

Fragment和Fragment之间通信

Fragment之间不能直接通信,需要通过Activity来实现Fragment之间通信,不再举例进行说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android TV的界面通常使用垂直的级列表来展示不同的选项。在实现这样的界面时,可以使用ExpandableListView和Fragment来完成。 首先,我们可以在布局文件中添加一个ExpandableListView来显示一级和级列表。在Activity或者Fragment中,我们可以通过代码来设置ExpandableListView的适配器,并实现对应的方法来填充数据。 接下来,我们可以创建一个Fragment,用于显示一级列表的选项。该Fragment会包含一个ExpandableListView,并通过适配器来填充一级列表的数据。一个ExpandableListView适配器需要实现ExpandableListAdapter接口,并重写对应的方法,例如getGroupCount()、getChildrenCount()和getChildView()等方法。 在第一级列表的每个选项被点击时,我们可以通过OnClickListener来监听并获取选中的位置。然后,我们可以加载对应的子级列表的Fragment,并将其添加到Activity或者父级Fragment中的布局中。 对于级列表的数据填充,我们可以创建一个继承自BaseExpandableListAdapter的适配器。这个适配器需要实现对应的方法,例如getChild()、getChildId()、getGroup()和getGroupId()等方法来填充数据。 最后,通过FragmentTransaction将我们的Fragment添加到Activity或者父级Fragment的布局中,并提交事务即可完成。这样,我们就实现了Android TV上的级竖向展示界面。 总结来说,使用ExpandableListView和Fragment可以实现Android TV的级竖向展示界面。我们可以通过ExpandableListView的适配器来填充一级列表的数据,并在点击一级列表选项时动态加载并显示对应的级列表的Fragment。通过这样的方式,我们可以方便地实现Android TV上的界面布局。 ### 回答2: 在Android TV上,我们可以使用ExpandableListView和Fragment来实现级竖向界面。 首先,我们需要创建一个ExpandableListView来呈现父级项和子级项。ExpandableListView是Android提供的一个可展开和折叠的列表视图,可以用于显示具有层级关系的数据。我们可以使用Adapter来为ExpandableListView提供数据。 接下来,我们需要使用Fragment来实现级竖向界面。FragmentAndroid提供的一种可以嵌套于Activity的独立组件,可以灵活地管理视图层次结构并自己处理用户界面交互。我们可以创建两个Fragment,一个用于显示父级项列表,另一个用于显示选中的父级项对应的子级项列表。 在父级项列表Fragment中,我们可以使用ExpandableListView来展示父级项。我们可以使用一个自定义的ExpandableListAdapter来为ExpandableListView提供数据,并在父级项被点击时,更新选中的父级项的子级项数据。 在子级项列表Fragment中,我们可以根据点击的父级项的位置获取对应的子级项数据,并使用RecyclerView或ListView来展示子级项。 通过在Fragment中嵌套使用ExpandableListView和子级项列表,我们可以实现一个级竖向的界面。用户可以点击父级项来展开或折叠子级项,并可以在子级项列表中进行滚动浏览。这样可以提供良好的用户体验。 总结起来,使用ExpandableListView和Fragment,我们可以实现一个级竖向的界面,用于在Android TV上展示层级关系的数据。 ### 回答3: 在Android TV上,可以使用ExpandableListView和Fragment来实现级竖向布局。 首先,创建一个Fragment用于显示ExpandableListView。在Fragment的布局文件中,可以使用ExpandableListView来展示级竖向布局。ExpandableListView需要一个Adapter来提供数据,因此需要创建ExpandableListAdapter。ExpandableListAdapter需要实现父项和子项的数据提供,决定每个父项和子项的视图。在Adapter中,可以使用ParentItem作为父项的数据模型,ChildItem作为子项的数据模型。然后,通过重写getGroupCount()、getChildCount()、getGroup()、getChild()等方法,将数据绑定到ExpandableListView上。 接下来,创建一个Fragment用于显示级竖向布局的子项内容。在这个Fragment中,可以展示子项所需的内容。可以根据需要自定义布局文件,用于展示每个子项的UI元素。在这个Fragment中,可以根据需要加载和显示不同的子项内容。 在主Activity中,可以使用FragmentManager来管理Fragment的显示和切换。当父项被点击时,可以通过监听ExpandableListView的OnChildClickListener,获取子项的位置信息,并根据位置信息加载对应的子项内容Fragment,并将其添加到FragmentManager中显示。 以上就是使用Android TV上的ExpandableListView和Fragment实现级竖向布局的基本步骤。通过适当调整布局和数据,可以实现不同的级竖向布局效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值