返回数据到上一个activity/fragment

发布时间 2023-05-16 23:37:04作者: 实名吓我一跳

我的理解:首先,在源activity/fragment中进行跳转语句,并写入一个request,跳转后在跳转的activity进行返回数据,写入一个result,返回到源活动,然后在原活动进行重写onActivityResult方法,进行接收匹配。

首先,基本思路是这样,但是对于fragment和activity有些许区别,主要体现在:

跳转activity

//setResult(RESULT_OK,intent);

//finish();

但是fragment中是没有这个方法代码的,又相应的替换的代码,

但是我i项目仅仅用到了activity向fragment传值,所以没有涉及到,而在源活动中,onActivityResult大致一样,以下为我的部分代码:

一:这是fragment向activity内进行跳转

Button myButton = (Button) getActivity().findViewById(R.id.Add_Button);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Intent intent = new Intent(getActivity(), Add.class);
Bundle bundle = new Bundle();
bundle.putInt("User_id",User_id);
intent.putExtras(bundle);
//2023.5.16更改
startActivityForResult(intent,1);
// startActivity(intent);
}
});
二:我跳转回来的语句
Intent intent = new Intent(Add.this, HomeFragment.class);
//更新操作 2023.5.16
System.out.println("comsumer === " + comsumer);
intent.putExtra("already_Login",comsumer);
setResult(RESULT_OK,intent);
finish();

三:源活动接收的语句
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1)
{
if(resultCode == RESULT_OK)
{
int flag = data.getIntExtra("already_Login",-1);
// System.out.println("收到了 == " + data.getIntExtra("already_Login",-1));
if(flag == -1)
{
Toast.makeText(getContext(), "出错了,主人", Toast.LENGTH_SHORT).show();
}else
{
Toast.makeText(getContext(), "收到了,主人", Toast.LENGTH_SHORT).show();
User_id = flag;
System.out.println("User_id " + User_id);
simpleAdapter = new SimpleAdapter(getActivity(),getData(),R.layout.my_menu,new String[]{"type","money"},new int[]{R.id.myMenu_type,R.id.myMenu_money});
listView.setAdapter(simpleAdapter);

}

}
}
}