android动态替换Fragment向下传递数据

以前传递数据都是使用Intent进行传递,但是intent是跳转,我们这个是动态替换 所以刚开始也是一脸懵逼,百度也百度不到,就自己慢慢摸索出来了:

话不多说,直接上代码:(主要核心代码加粗)

package com.smartgentechnology;import android.content.Intent;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.TextView;

public class HomePage extends AppCompatActivity implements View.OnClickListener {//动态替换碎片    private TextView tab1, tab2, tab3, user;    private String jurisdiction;

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_homepage);

        Intent intentHome = getIntent();        jurisdiction = intentHome.getStringExtra("importid");        String username = intentHome.getStringExtra("importname");        user = findViewById(R.id.home_name);        user.setText(username);        initView();//初始化数据    }

    private void initView() {        tab1 = findViewById(R.id.set);        tab2 = findViewById(R.id.statement);        tab3 = findViewById(R.id.repaire);        tab1.setOnClickListener(this);        tab2.setOnClickListener(this);        tab3.setOnClickListener(this);        tab1.setSelected(true);        replaceFragment(new BasicSetting(), jurisdiction);    }

    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.set:                selected();                tab1.setSelected(true);                replaceFragment(new BasicSetting(), jurisdiction);                break;            case R.id.statement:                selected();                tab2.setSelected(true);                replaceFragment(new Report(), jurisdiction);                break;            case R.id.repaire:                selected();                tab3.setSelected(true);                replaceFragment(new RepairModule(), jurisdiction);                break;        }    }

    private void replaceFragment(Fragment fragment, String uid) {        FragmentManager fragmentManager = getSupportFragmentManager();        FragmentTransaction transaction = fragmentManager.beginTransaction();        transaction.replace(R.id.main_fragment, fragment);        Bundle bundle = new Bundle();//使用Bundle传递数据        bundle.putString("msg", uid);        fragment.setArguments(bundle);        transaction.commit();    }

    private void selected() {//初始化是否选中的状态        tab1.setSelected(false);        tab2.setSelected(false);        tab3.setSelected(false);    }}

在碎片中接收数据:
//获得窗体传递来的数据Bundle bundle= BasicSetting.this.getArguments();//显示传递来的数据String uid = bundle.getString("msg");//Log.i("chulaiba",bundle.getString("msg"));


原文地址:https://www.cnblogs.com/yh0409/p/10818582.html

时间: 2024-11-05 16:00:17

android动态替换Fragment向下传递数据的相关文章

activity与fragment之间的传递数据

首先activity之间的数据传递就是 用intent和intent+bundle intent 传递 Intent i= new Intent(MainActivity.this,TheAty.class); i.putExtra("date","Hello SWWWWWW"); startActivity(i); 接受数据 Intent i =getIntent(); tv=(TextView) findViewById(R.id.tv); //通过"

Android动态添加Fragment

Android动态添加Fragment 效果图如下: 项目结构图如下: Fragment1: package com.demo.dongtaifragment; import android.app.Fragment; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutI

android78 Fragment和Activity 传递数据

Activity: package com.itheima.senddata; import android.os.Bundle; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.view.Menu; import android.view.View; import android.widget.EditT

Android广播接收器和Activity间传递数据

Activity向广播接收器传递数据很简单,只需要在发送广播前将数据put进Intent中就行了. 广播接收器怎么向Activity传送数据?这里要用到接口,通过在广播接收器里定义一个接口,然后让接收广播接收器数据的Activity实现这个接口.先看下面的栗子,Activity发送一个广播,然后广播接收器返回一个字符串. Activity布局文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearL

两个Fragment之间如何传递数据

FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来.有什么办法? Fragment之间不能直接通信,必须通过Activity来完成,具体步骤. 1. 在FragmentA中定义接口通信接口,通过该接口向Activity发送数据. public class FragmentA extends Fragment { private onButtonPressListener mListener; @Override pub

android 动态创建Fragment

前一遍文章我们讲了静态创建Fragment,这个在实际的开发中几乎不用,都是动态创建的,所谓动态创建就是根据某个条件动态创建Fragment, 现在创建一个android项目 dynamicFragment MainActivity.java package com.example.dynamicfragment; import android.app.Activity; import android.app.FragmentManager; import android.app.Fragmen

动态替换fragment

// [1]获取手机的宽和高 windommanager WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight(); // [2]判断横竖屏 // [3.1]获取fragment的管理者 FragmentManager manag

使用-Prop-传递数据(父组件通过 props 向下传递数据给子组件)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>使用-Prop-传递数据</title> <script src="vue.js"></script> </head> <body> <div id="app"&g

android post方式给后台服务器传递数据

请求方式GET和POST的简单分别: get方式是把参数附加到URL地址后面,如: http://localhost:8080/loginServlet.html?username=123&password=456 post是将请求参数放到请求体中,以流的方式传到服务器,另外上传文件时,一定是post方式 下面的代码是用post方式模拟用户登录 com.yuanlp.qqloginpostandroid.os.Bundleandroid.support.v7.app.AppCompatActiv