其他分享
首页 > 其他分享> > 安卓中Fragment和Activity或者是Fragment和Fragment如何传值

安卓中Fragment和Activity或者是Fragment和Fragment如何传值

作者:互联网

安卓中Fragment和Activity或者是Fragment和Fragment如何传值

从网上搜索了一下,大概无外乎两种方法(这两种可以是看别人的博客,我就不重复造轮子了,我是利用文件的方法进行信息存取)

1是利用Bundle传值,但是我写的时候发现获取到的值是空值,然后搜索资料,他们说要做fragment的布局初始化之前传值,不然无法接收到数据,但是因为我的Fragment和Activity都不处于同一布局下,所以比较难实现用Bundle传值。(其实是我选修的安卓,没有系统学习安卓,所以没太懂这个初始化之前传值具体操作,毕竟失败太多次了_


2就是利用接口传值,没看懂,所以直接划走了(java学到一般,见谅)


3就是用文件存储信息,然后读取,也是我经过实验得到的可行方法,下面是具体的操作

FileOutputStream fi_out;//写入数据
        try{
            fi_out = openFileOutput("user_msg.txt",MODE_PRIVATE);//txt文件的名字随便取,存储数据
            fi_out.write(name.getBytes());//name就是你要存的数据,我这边是以字符串的形式存的,name的类型是个字符串
            fi_out.close();
        }catch (Exception e){
            e.printStackTrace();
        }
try{
            FileInputStream fi_input;//读取数据
            fi_input = getActivity().openFileInput("user_msg.txt");//名字对应上面的txt,getActivity是在Fragment里面用的,Activity里面去掉
            byte[] buffer = new byte[fi_input.available()];
            fi_input.read(buffer);
            String msg = new String(buffer);
            user = msg.split("\n");//String [] user一维数组
            Log.i("lllc",user[0]);
            fi_input.close();
        }catch (Exception e){
            e.printStackTrace();
        }

我这边新建了一个项目测试了一下代码没问题,
在这里插入图片描述
在这里插入图片描述

附上完整测试代码

package com.example.myapplicationhelpfile;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FileOutputStream fi_out;//写入数据
        try{
            fi_out = openFileOutput("user_msg.txt",MODE_PRIVATE);//txt文件的名字随便取,存储数据
            fi_out.write("ddd".getBytes());//name就是你要存的数据,我这边是以字符串的形式存的,name的类型是个字符串
            fi_out.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        try{
            FileInputStream fi_input;
            fi_input = openFileInput("user_msg.txt");
            byte[] buffer = new byte[fi_input.available()];
            fi_input.read(buffer);
            String msg = new String(buffer);
            String [] user;
            user = msg.split("\n");//以\n为分隔符
            Log.i("lllc",user[0]);
            fi_input.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

至于权限问题,好像这个data的文件写入读取好像不需要权限,在SD卡下的才需要权限,我新建项目在AndroidManifest文件里面没加什么权限。

标签:Fragment,Activity,user,安卓中,input,msg,fi,out
来源: https://blog.csdn.net/weixin_44494211/article/details/112729574