如何从Bundle获取值到另一个Fragment

时间:2014-07-05 06:32:32

标签: android android-fragments bundle

我的问题是将bundle的值发送到我的代码正在运行的另一个片段但是从SQLite Database获取不同的数据,例如我从其他帐户登录不同的数据后登录我的帐户如果有人可以告诉我如何将捆绑包中的值转移到另一个Fragment

,请在我的Profile.class中显示

这就是我在Login.class中的内容

FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                DocProfile fragment = new Profile();
                Bundle bundle = new Bundle();
                bundle.putString("Name", c.getString(1));
                bundle.putString("Age", c.getString(2));
                bundle.putString("Gender", c.getString(3));
                bundle.putString("Address", c.getString(4));
                bundle.putString("Email", c.getString(5));
                bundle.putString("Contact", c.getString(6));
                fragment.setArguments(bundle);
                ft.replace(R.id.content_frame, fragment);
                ft.commit();

在我的Profile.class中从bundle获取值但获取不同的用户数据

Bundle args = getArguments();
    if (args != null && args.containsKey("Name"))
        name = args.getString("Name");

    if (args != null && args.containsKey("Age"))
        age = args.getString("Age");

    if (args != null && args.containsKey("Gender"))
        gender = args.getString("Gender");

    if (args != null && args.containsKey("Address"))
        address = args.getString("Address");

    if (args != null && args.containsKey("Email"))
        email = args.getString("Email");

    if (args != null && args.containsKey("Contact"))
        contact = args.getString("Contact");

3 个答案:

答案 0 :(得分:2)

使用getArgument()

public class Test extends Fragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);

            Bundle bundle = getArguments();
            String str = bundle.getString("YOUR_KEY");
        }

        }

答案 1 :(得分:1)

嘿,当你试图从光标获取值时尝试这样

我认为问题是您在c.getString(int)

中传递的索引编号
bundle.putString("Name", c.getString(c.getColumnIndex("your_column_name")));

和@Sanket Kachhela指南的其他人一样,你喜欢这个

建议

当您在循环中获取游标值时使用此

bundle.putString("Name", c.getString(c.getColumnIndex("your_column_name")));

 int columnIndex = c.getColumnIndex("your_column_name");
 bundle.putString("Name", c.getString(columnIndex));

因为

在循环查找列索引中每次都是耗时的任务这会影响应用程序性能,而列索引每次都不会更改所以找到它一次并在循环中每次使用

答案 2 :(得分:0)

Bundle bundle = this.getArguments();

String name = bundle.getString("Name");

String name = bundle.getString("Name","yourdefaultvaluehere");

当bundle没有名为" name"它将采用指定的默认值