android - 如何完成fragment中数据的导入和检索?
PHP中文网
PHP中文网 2017-04-17 11:29:11
[Android讨论组]

目前,我在创建新的activity,想要导入如下数据:

Intent myIntent = new Intent(c, TastePage.class);
myIntent.putExtra("taste", tempTaste);
c.startActivity(myIntent);

然后如下代码在新的activity中检索数据:

//get data from listview
Bundle extras = getIntent().getExtras();
String taste = extras.getString("taste");

为了更好的遵循Android的设计准则,我设定了一个导航栏,然后将activity转化成fragment。但是,不太清楚如何在不同的fragment之间传输数据。我用如下代码加载新的fragment:

FragmentManager man=getFragmentManager();
                FragmentTransaction tran=man.beginTransaction();
                Fragment_two=new BPTopTastes();
                tran.replace(R.id.main, Fragment_two);//tran.
                tran.addToBackStack(null);
                tran.commit();

我怎样操作才能保证,既可以将数据导入新的fragment当中,又可以完成检索功能呢?

原文:How to pass data between fragments and retrieve it in the new fragment?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
PHPz

答:Elenasys
你可以用Bundle,从源片段(source fragment)中将数据打包进行发送:

Fragment fragment = new Fragment();
final Bundle bundle = new Bundle();
bundle.putString("user_name", myusername);
fragment.setArguments(bundle);

然后从目标片段中(target fragment)读取数据:

Bundle args = getArguments();
if (args  != null && args.containsKey("user_name"))
String userName = args.getString("user_name");

答:myCode
我的建议是,不一定要使用Bundle进行操作,你可以试着使用设值函数(setter)进行相关值的设定:

public class YourFragment extends Fragment{
    private String mUserName;

    public void setUserName(String userName) {
        mUserName = userName;
    }
}

......

FragmentTransaction tran = getSupportFragmentManager().beginTransaction();

YourFragment fragment = new YourFragment();

fragment.setUserName(myUserName);

tran.add(R.id.main, fragment, "frag");

tran.addToBackStack(null);

tran.commit();

答:A.Alqadomi
你可以使用Singleton Class(可以在services / activities / fragments ......中找到)在你的Android程序上完成任何配置间的数据传输:

class GlobalVars{
private GlobalVars global;
private String taste;//generate get/set
public static GlobalVars getinstance(){
if(global==null){global = new GlobalVars();}
return global}}
}
//By Calling
GlobalVars.getinstance()
//you will have a common access to the variables inside the class
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号