zoukankan      html  css  js  c++  java
  • Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)

    Fragment与Activity之间的数据交换,通常含有3:

    一、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;
    	}
    
    }
    

    源码下载:

    点击下载源代码

  • 相关阅读:
    redis实现分布式缓存
    redis持久化
    Redis五种数据类型
    Azure Digital Twins(1)-创建实例并设置角色
    Azure Digital Twins(2)- 在本地使用ADT Explorer 管理数字孪生
    Azure Digital Twins(3)- 数字孪生体和数字孪生图
    Azure + 5G + AI + IOT可以这么玩
    使用Azure Storage API 上传 文件解决微信小程序中上传图片的问题
    Azure入门(1)- Azure核心概念
    利用 Management Group 和Policy 控制Azure 指定资源的创建
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4566903.html
Copyright © 2011-2022 走看看