![](/img/trans.png)
[英]Unable to pass intent extras from Activity to fragment inside Viewpager
[英]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.