如何在android上将数据从活动传递到片段

如何在android上将数据从活动传递到片段,android,android-fragments,Android,Android Fragments,我有一个名为“家”的活动;登录后,我被重定向到此活动。此活动以这种方式实现两个片段页眉和页脚 View header = inflater.inflate(R.layout.fragment_header_fragement, null); View footer = inflater.inflate(R.layout.fragment_footer, null); mDrawerListView.addHeaderView(header); mDrawerListView.addFooter

我有一个名为“家”的活动;登录后,我被重定向到此活动。此活动以这种方式实现两个片段页眉和页脚

View header = inflater.inflate(R.layout.fragment_header_fragement, null);
View footer = inflater.inflate(R.layout.fragment_footer, null);

mDrawerListView.addHeaderView(header);
mDrawerListView.addFooterView(footer);
我想主要在“Home”活动中实现的标题片段中显示从日志记录活动传输的一些数据。我搜索过的问题是,我发现我们可以在主活动中添加或替换一个片段,而不能在另一个片段中添加或替换。我试图资助一个解决方案,但还没有。这是我的代码:

@Override
protected void onPostExecute(final String res) {
    //LoginTask = null;
    //showProgress(false);

    try {
        jObj = new JSONObject(res);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    try {
        if (jObj.getString("code").equals("1")) {

            infos = new Bundle();

            infos.putString("ID",jObj.getString("ID"));
            infos.putString("Name",jObj.getString("display_name"));
            infos.putString("ImgUrl","http://unchained-network.com/uploads/profilpics/53f5c570b6ac2.png");

            android.support.v4.app.FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
            HeaderFragement hf = new HeaderFragement();

            //Charger les infos dans l'activité
            hf.setArguments(infos);
            tr.add(R.id.frgmnt,hf);
            tr.commit();

            Intent myIntent = new Intent(getActivity(), HomesActivity.class);
            //Lançer l'activité
            startActivityForResult(myIntent, 0);

        } else {
            //password.setError(getString(R.string.error_incorrect_password));
            //password.requestFocus();
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle("Error !");
            builder.setMessage("The information entered is incorrect.\nPlease try again!")
                   .setCancelable(false)
                   .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int id) {
                     dialog.cancel();
                 }
            });
            AlertDialog alert = builder.create();
            alert.show();

        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

}
这就是我如何将数据提取到片段中的方法


所以,有什么解决办法吗。谢谢

为什么不通过intents传递数据呢?您有两个活动:登录和主页

在上面的代码中,您可以简单地添加如下额外信息

myIntent.putExtraname,值

然后你就可以在家里找回这个活动了

String extra=i.getStringExtraname


然后将这个额外的变量传递给头片段。

将变量传递给片段的代码没有任何错误。我刚刚复制了你的代码,效果很好

活动:

Bundle infos = new Bundle();
infos.putString("ID", "1");
infos.putString("Name", "Gonzo");
FragmentMain frag = new FragmentMain();
frag.setArguments(infos);
片段:

Bundle infos = getArguments();
Log.i(getTag(), infos.getString("Name"));
我建议您在onPostExecute中添加一些日志记录,或者在调试模式下逐步执行。确保json返回您期望的内容

一般来说,infos.getString接受两个参数,第二个参数是一个可能有用的默认值。也要避免使用硬编码键,比如Name,而是使用公共静态字符串并引用它


祝你好运。

问题是我的两个片段是独立的,你说我应该将数据从家传递到片段;我想如果我想直接将它从登录名传递到片段,也是一样的。我的fragements被实现到Home活动中,但它们是分开的。你说分开是什么意思?我已经创建了HeaderFragment类和布局,并且以同样的方式,在我将它们实现到导航抽屉中之后,将页脚实现到Home活动中
Bundle infos = new Bundle();
infos.putString("ID", "1");
infos.putString("Name", "Gonzo");
FragmentMain frag = new FragmentMain();
frag.setArguments(infos);
Bundle infos = getArguments();
Log.i(getTag(), infos.getString("Name"));