如何完成fragment中数据的导入和检索?

目前,我在创建新的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?

阅读 3.6k
1 个回答

答: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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题