繁体   English   中英

如何将意向额外信息传递到活动和先前活动中的碎片

[英]How to pass intent extras to activity and frgment inside it from previous activity

我有两个活动,活动B是用户上传个人资料的地方,一旦上传,他将重定向到活动A,其中包含两个片段,片段一和片段二

当应用启动时,用户将被重定向到具有抽屉菜单的活动A并显示为注册。一旦用户单击注册,便会打开活动B。 当用户提交按钮时,我将活动B中的其他内容传递给A,然后将其从菜单中隐藏“注册”按钮。

在活动B中

                Intent in = new Intent(B.this, A.class);
                in.putExtra("hideRegistermenu", true);
                startActivity(in);

在活动A中

 if(getIntent().getBooleanExtra("hideRegistermenu", false)) {

        menu.findItem(R.id.register).setVisible(false);

    }

它工作正常,我的问题是,因为我在底部的片段1中也有注册按钮,所以当用户上传他/她的个人资料并重定向到活动A时,我也想更改片段A中的按钮文本或隐藏按钮。

但是我如何将相同的意图额外信息也传递给活动A内的片段,然后根据我的任务接收到的意图额外信息。

提前致谢。

在活动A中,使用以下命令开始活动B:

 public static final int UPDATED_USER = 20;
startActivityForResult(ActivityA.this,ActivityB.class,UPDATED_USER );

在Activity A上实现方法OnActivityResult像这样:

   @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK&&requestCode==UPDATED_USER  ){
        //Your code here
        Bundle bundle = data.getExtras();   //Your new data
        String name = bundle.getString("name");

    }
}

一旦您开始活动B,并且用户更新了个人资料,就可以完成以下活动:

    Intent data = new Intent();
    data.putString("name","name");
    //put All your data
    setResult(Activity.RESULT_OK, data);
    finish();

步骤1:将数据从活动传递到片段,

Bundle bundle = new Bundle();
bundle.putString("name", "My name");
// set MyFragment Arguments
MyFragment myObj = new MyFragment();
myObj.setArguments(bundle);

步骤2:将数据接收到片段,

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString("name");
        }
    }

在您的代码中应用它。

希望对您有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM