Fragment 跳转到 Activity 如何接收回来的数据

本文详细介绍了如何在Android应用中实现Fragment与Activity之间的数据交互流程。通过四个步骤:Fragment发起请求、Activity接收并处理数据、Activity回传数据、Fragment接收并更新UI,实现了跨组件的数据传递。特别强调了在Fragment中处理回传数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在fragment 里跳转

intent=new Intent(getActivity(), ChooseCityActivity.class);
intent.putExtra(Constant.NowCity,locationCity);
getActivity().startActivityForResult(intent,Constant.ChooseCityActivityCode);

****2.另一个activity里接收
定义一个回传数据的intent
一个接收fragement传递数据的intent****

backIntent=new Intent();//回传的Intent
mIntent=getIntent();
currentCity=mIntent.getStringExtra(Constant.NowCity);

定义一个setResult方法
并且在里面传递数据,调用回传

backIntent.putExtra(Constant.ChoosedCity, choosedCity);
// 设置结果,并进行传送
ChooseCityActivity.this.setResult(Constant.ChooseCityActivityResultCode, backIntent);

**3.在 fragment 所在的activity里处理返回结果
本来我是用广播写的数据接收,后面觉得没有必要
注意里面有一行代码是分发到fragment里,一定要加上这行代码,不然fragment里没有回传的数据**

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case Constant.ChooseCityActivityCode:
if (resultCode==Constant.ChooseCityActivityResultCode){
String city=new String();
Log.i(TAG,”data:”+data);
city=data.getStringExtra(Constant.ChoosedCity);
//updateView(city);
//返回首页的时候 替换上次的定位
SharedPreferencesUtils.putShared(MainActivity.this,Constant.LastAdress,city);
mFragment[0].onActivityResult( requestCode, resultCode, data);//分发到Fragment里
//
Log.i(TAG,”city:”+city);
//sendChoosedCityBroadCastReceiver(city);//更新了位置 发送广播
}
break;
}
}

****4.fragment处理回传的数据
重写onActivityResult方法,得到数据,更新UI****

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==Constant.ChooseCityActivityCode&&data!=null){
Bundle bundle=data.getExtras();
if (resultCode==Constant.ChooseCityActivityResultCode){
String city=bundle.getString(Constant.ChoosedCity);
Log.i(TAG,”onActivityResult city=”+city);
updateView(city);
}
}
}

### 回答1: 从Fragment跳转Activity可以通过以下步骤实现: 1. 在Fragment中获取Activity的引用: ``` Activity activity = getActivity(); ``` 2. 创建Intent对象并设置要跳转Activity: ``` Intent intent = new Intent(activity, TargetActivity.class); ``` 3. 调用startActivity方法启动目标Activity: ``` startActivity(intent); ``` 完整代码示例: ``` public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_my, container, false); Button btnJump = view.findViewById(R.id.btn_jump); btnJump.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 获取Activity的引用 Activity activity = getActivity(); if (activity != null) { // 创建Intent对象并设置要跳转Activity Intent intent = new Intent(activity, TargetActivity.class); // 启动目标Activity startActivity(intent); } } }); return view; } } ``` ### 回答2: 在实际开发中,我们经常需要在Fragment中进行跳转,如点击Fragment中的按钮会跳转到某个Activity页面。以下是实现从Fragment跳转Activity的一种方法。 1. 创建Activity 首先,我们需要创建一个新的Activity。可以在Android Studio中使用“New -> Activity -> Empty Activity”来创建一个空的Activity。在Activity的布局文件中可以放置需要展示的控件,如TextView、ImageView等。 2. 在Fragment中注册点击事件 在Fragment中找到需要点击进行跳转的View(如Button),并注册点击事件。在点击事件中使用Intent来跳转Activity。代码示例如下: ```java Button btnToActivity = view.findViewById(R.id.btn_to_activity); btnToActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), YourActivityName.class); startActivity(intent); } }); ``` 在Intent的构造函数中,第一个参数为当前Fragment所属的Activity对象,第二个参数为需要跳转Activity.class。可以通过修改YourActivityName来指定需要跳转Activity。 3. 在AndroidManifest.xml中注册Activity 当我们创建一个新的Activity时,需要在AndroidManifest.xml中进行注册才能在其他组件中使用。打开AndroidManifest.xml文件,找到“application”标签内,创建一个新的“activity”标签,添加我们新创建的Activity信息。代码示例如下: ```xml <activity android:name=".YourActivityName"/> ``` 其中,YourActivityName为你新创建的Activity名称。 4. 运行应用 完成以上三个步骤后,我们可以运行应用并点击Button进行跳转。如果出现问题,可以检查是否在AndroidManifest.xml中正确注册了Activity,或者是否在代码中正确引用了Activity名称。 总结 以上就是实现从Fragment跳转Activity的简单步骤。在实际开发中,我们可能需要传递一些数据到目标Activity,可以在Intent中使用putExtra()方法来实现。例如: ```java Intent intent = new Intent(getActivity(), YourActivityName.class); intent.putExtra("key", value); startActivity(intent); ``` 在目标Activity中可以接收传递的数据,例如: ```java getIntent().getStringExtra("key"); ``` 希望以上内容对你有所帮助。 ### 回答3: 在Android应用程序中,FragmentActivity是很重要的两个概念。Fragment可以看作是Activity的一部分,它可以在Activity中添加和移除,并且可以重用。而Activity一个单独的UI界面,与用户交互,完成特定的任务。 在某些情况下,我们需要从Fragment跳转到另一个Activity页面,这个过程可以通过以下几步完成: 1. 首先,在Fragment中的适当位置,添加一个Intent对象,用于启动目标Activity。 ``` Intent intent = new Intent(getActivity(), TargetActivity.class); startActivity(intent); ``` 这将创建一个新的Intent对象,并通过调用Activity的startActivity()方法来启动目标Activity。 2. 接下来,在目标Activity的布局文件中创建一个新的布局,以便在其中包含所需的UI元素。然后,在Activity中执行所需的操作。例如,如果您需要从Fragment中提取一些数据,并在另一个Activity中显示它们,您可以使用getIntent()方法来获取传递的Intent对象,并从中提取数据。 ``` Bundle extras = getIntent().getExtras(); if (extras != null) { String value = extras.getString("key"); // do something with your value } ``` 这段代码将从传递的Intent对象中获取值,并将其存储在一个字符串变量中,您可以在其中执行任何操作。 3. 最后,在新的Activity中完成任务后,您可以使用finish()方法关闭该Activity,并回到父ActivityFragment。在某些情况下,您可能需要回一些数据给父ActivityFragment,例如,用户在目标Activity中进行了一些更改,并且需要在父ActivityFragment中进行相应的更改。 ``` Intent intent = new Intent(); intent.putExtra("key", "value"); setResult(RESULT_OK, intent); finish(); ``` 这段代码将在关闭Activity之前,将需要回的数据存储在Intent对象中,并使用当前Activity的setResult()方法将其设置为RESULT_OK的值。这将告诉父ActivityFragment,在目标Activity已完成任务时可以回结果,并且您可以在之后的代码中使用回的数据执行操作。 通过这些步骤,您可以在Android应用程序中从Fragment跳转到其他Activity。这使得您可以为应用程序创建复杂的UI,以便在不同的屏幕大小和方向上提供最佳的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值