我是靠谱客的博主 大胆西装,最近开发中收集的这篇文章主要介绍Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Fragment与Activity之间的数据交换,大体上包括三种:
一、Fragment从Activity获取数据(本文章只介绍第一种);
二、Activity从Fragment获取数据;
三、Fragment之间获取数据。
实现效果图:
从Activity传递数据到两个Fragment中,Fragment获取数据后,展示出来。
源代码:
布局文件:
activity_main:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity"
- android:orientation="horizontal">
- <LinearLayout
- android:id="@+id/left"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:layout_weight="2"
- android:background="#CCCCCC">
- </LinearLayout>
- <LinearLayout
- android:id="@+id/right"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:layout_weight="2">
- </LinearLayout>
- </LinearLayout>
MyFragment1的布局文件f1:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- tools:context=".MainActivity" >
- <TextView
- android:id="@+id/textView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </LinearLayout>
MyFragment2的布局文件f2:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- tools:context=".MainActivity" >
- <TextView
- android:id="@+id/textView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </LinearLayout>
代码文件:
MainActivity:
- package com.fragmentdemo5_commute;
- import android.app.Activity;
- import android.app.FragmentManager;
- import android.app.FragmentTransaction;
- import android.os.Bundle;
- /**
- * 一、Fragment从Activity获取数据。
- */
- public class MainActivity extends Activity {
- private FragmentManager manager;
- private FragmentTransaction transaction;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- manager = getFragmentManager();
- transaction = manager.beginTransaction();
- MyFragment1 fragment1 = new MyFragment1();
- Bundle bundle1 = new Bundle();
- bundle1.putString("id", "Activity发送给MyFragment1的数据");
- fragment1.setArguments(bundle1);
- transaction.replace(R.id.left, fragment1, "left");
- MyFragment2 fragment2 = new MyFragment2();
- Bundle bundle2 = new Bundle();
- bundle2.putString("id", "Activity发送给MyFragment2的数据");
- fragment2.setArguments(bundle2);
- transaction.replace(R.id.right, fragment2, "right");
- transaction.commit();
- }
- }
MyFragment1:
- package com.fragmentdemo5_commute;
- import android.app.Fragment;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
- public class MyFragment1 extends Fragment {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.f1, null);
- TextView textView = (TextView) view.findViewById(R.id.textView);
- Bundle bundle1 = getArguments();
- textView.setText(bundle1.getString("id"));
- return view;
- }
- }
MyFragment2:
- package com.fragmentdemo5_commute;
- import android.app.Fragment;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
- public class MyFragment2 extends Fragment {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.f2, null);
- TextView textView = (TextView) view.findViewById(R.id.textView);
- Bundle bundle2 = getArguments();
- textView.setText(bundle2.getString("id"));
- return view;
- }
- }
最后
以上就是大胆西装为你收集整理的Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)的全部内容,希望文章能够帮你解决Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复