安卓中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