碎片的简单用法及碎片与Activity之间的通信
来源:互联网 发布:淘宝网是阿里巴巴的吗 编辑:程序博客网 时间:2024/06/05 20:59
碎片的简单用法及碎片与Activity之间的通信
我们都知道手机界面的展示都是由Activity来完成,Acitivity特别常用。但Activity也有局限性在手机界面上显示正常,到了平板上就比较难看了。所以碎片(Fragment)就诞生了。我们也可以把碎片叫做小Activity。在Activity中嵌入两个Fragment。如下:
1、布局
MainActivity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <fragment android:id="@+id/frLeft" android:name="com.valiantman.fragmentfenlan.LeftFragment" android:layout_width="223dp" android:layout_height="match_parent"/> <FrameLayout android:id="@+id/flContainer" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2"> </FrameLayout></LinearLayout>
LeftFragment
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:entries="@array/titles" android:scrollbars="none" /></LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <TextView android:id="@+id/tvDetail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp"/></LinearLayout>
2、LeftFragment
通过接口回调得到数据,定义一个内部接口。在需要回调的类实现该接口,实现接口回调
public class LeftFragment extends BaseFragment { @Override public int getLayoutId() { return R.layout.fragment_left; } @Override public void operation() { final String[] titles = getResources().getStringArray(R.array.titles); ListView listView = (ListView) view.findViewById(R.id.list_view); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (resolver != null) { resolver.showTitleDetail(titles[position]); } } }); } //用于与Activity之前通信,通过回调把被点击的item的数据传递给Activity TitleResolver resolver; public void setResolver(TitleResolver resolver) { this.resolver = resolver; } interface TitleResolver { void showTitleDetail(String title); }}
3、RightFragment
public class RightFragment extends BaseFragment { @Override public int getLayoutId() { return R.layout.fragment_right; } @Override public void operation() { TextView detail = (TextView) view.findViewById(R.id.tvDetail); Bundle bundle = getArguments(); String title = bundle.getSerializable(str).toString(); detail.setText(title); }}
public class MainActivity extends AppCompatActivity implements LeftFragment.TitleResolver { private FragmentManager fragmentManager; private FragmentTransaction fragmentTransaction; private LeftFragment leftFragment; private RightFragment fragment; private Bundle bundle; public static final String str = "title"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFragment(); } private void initFragment() { fragmentManager = getSupportFragmentManager(); //获取FragmentManager leftFragment = ((LeftFragment) fragmentManager.findFragmentById(R.id.frLeft)); leftFragment.setResolver(this); String[] array = leftFragment.getResources().getStringArray(R.array.titles); replaceFragment(); bundle = new Bundle(); bundle.putString(MainActivity.str,array[0]); fragment.setArguments(bundle); } private void replaceFragment() { fragment = new RightFragment(); fragmentTransaction = fragmentManager.beginTransaction(); //开启事务 fragmentTransaction.replace(R.id.flContainer, fragment); //替换Fragment fragmentTransaction.commit(); //提交事务 } @Override public void showTitleDetail(String title) { replaceFragment(); bundle.putString(MainActivity.str,title); fragment.setArguments(bundle); }}看完代码我们都知道Fragment之间没有直接通信,而是通过与Activity关联来通信。效果图如下
阅读全文
2 0
- 碎片的简单用法及碎片与Activity之间的通信
- 碎片到碎片 碎片到活动 之间的通信
- Android学习之碎片与活动之间的通信
- Fragment的碎片与活动之间进行通信
- Android学习之碎片与活动之间的通信
- 【Android】22、碎片之间的通信
- Activity与在Android的碎片Fragment
- 动态加载碎片的简单用法
- 【Android】50、碎片的简单用法
- 查看表的碎片及整理碎片
- 宿主activity和碎片之间的传值
- Fragment之10_____碎片之间的通信方式 之一
- 碎片和活动之间进行通信(获取faragment的实例)
- 碎片和活动之间进行通信、碎片之间进行通信
- viewpager与碎片的结合
- 内存的外部碎片与内部碎片的一些区别
- Fragment碎片(小activity)定义及用法
- 静态添加的碎片中相互通信
- Java 的Integer、int与new Integer到底怎么回事?
- 创建linux用户
- 2017最新App上架流程(首次,被拒后重新提交)(亲测)
- 学习JAVA,如何从入门到精通
- Linux下mongodb的安装
- 碎片的简单用法及碎片与Activity之间的通信
- 欢迎使用CSDN-markdown编辑器
- Oracle解锁表操作
- 【idea】部署springboot
- 面试题22:栈:栈的压入和弹出序列
- Openfoam学习记录(2017.06.08)
- 俄罗斯方块全功能简化版
- 中国科技论文统计结果
- 从今天开始记录我的学习过程