本人最近在开发类似订票app的过程中,遇到一个问题,订票界面的Activity由三个fragment组成,当fragment中的listView选中某一item后,立即把结果返回给跳转到次Activty的上一个Activity。期间尝试了sendBroadCast(Intent)通信的方法,(PS:当fragment改为Activity时,它只能将结果返回给(或者按返回键只能跳转到呈现tabhost的Activity,而如果tabhost选项卡为fragment时,按返回键则可直接跳转到上一个Activity)呈现这三个Tabhost选项的Activity,而无法返回给“上一个”Activity——跳转到该tabhost的Activity),最后找到了一种比较稳定的方法。
“上一个”Activity——MainActivity:
@Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, StationActivity.class); if(v.getId() == R.id.from) { Bundle bundle = new Bundle(); bundle.putString("flag", "from"); intent.putExtras(bundle); startActivityForResult(intent, FROM_REQUEST); } if(v.getId() == R.id.to) { intent.putExtra("flag", "to"); startActivityForResult(intent, TO_REQUEST); } }
在MainActivity中添加接收返回结果的回调方法:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == FROM_REQUEST && resultCode == HotStationFragment.FROM_RESULT) { from.setText(data.getExtras().getString("city")); } if(requestCode == TO_REQUEST && resultCode == HotStationFragment.TO_RESULT) { to.setText(data.getExtras().getString("city")); } }
“下一个”Activity中的某个Fragment(其getActivity()方法得到的是该Fragment所在的Activity):
//为列表项设置点击监听事件 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = getActivity().getIntent(); Bundle bundle = intent.getExtras(); String city = (String) listView.getItemAtPosition(position); intent.putExtra("city", city); if(bundle.getString("flag").equals("from")) { getActivity().setResult(FROM_RESULT, intent); }else if(bundle.getString("flag").equals("to")) { getActivity().setResult(TO_RESULT, intent); } getActivity().finish(); } });
终于通过这种方式解决了将该fragmen中的返回结果直接返回给上一个Activity的问题!
相关推荐
本文将深入探讨如何实现从一个Activity跳转到Fragment,以及如何从Fragment返回到另一个Activity。 首先,我们来看如何从一个Activity启动Fragment。在Android中,Fragment不能直接启动,它必须嵌套在Activity中。...
在Android应用开发中,Activity和Fragment是两个至关重要的组件,它们构成了用户界面的主要部分,并管理着应用程序的行为。本文将深入探讨这两个概念,以及它们在不同场景下的生命周期。 首先,Activity是Android...
4. **onActivityResult(int, int, Intent)**:当Fragment启动一个新的Activity并期待结果时,可以通过startActivityForResult()方法。在Activity处理完结果后,通过onActivityResult()返回数据给Fragment。 5. **...
在Android应用开发中,Activity和Fragment是两个至关重要的组件,它们构成了用户界面的主要部分,并各自拥有独特的生命周期。本文将深入探讨Activity和Fragment的生命周期,帮助开发者更好地理解和掌握这两个组件的...
然而,由于Fragment并不直接通过Intent启动,因此这种方式通常用于Activity启动另一个Activity时传递数据给新的Fragment。 2. **通过setArguments()和getArguments()**: 这是最常用的方法,创建Fragment时,可以...
2. **Fragment的onActivityResult()**:当Fragment启动一个Intent并需要接收结果时,可以重写onActivityResult()方法。Activity接收到结果后,通过调用Fragment的onActivityResult()传递回结果。 3. **使用 Bundle*...
一种常见的做法是添加一个接口到Fragment,由Activity实现这个接口,这样Fragment可以通过接口方法来启动Activity并处理结果: ```java public interface OnFragmentInteractionListener { void ...
在设计复杂的、多屏幕的应用时,理解并熟练掌握Fragment和Activity之间的交互是至关重要的。本文将深入探讨Fragment之间的切换以及Fragment与Activity之间的切换,以帮助开发者提升应用的用户体验。 Fragment的切换...
3. **启动Activity并获取结果**:使用`startActivityForResult()`启动Activity2,并传入请求码。 ```java getActivity().startActivityForResult(intent, requestCode); ``` 4. **在Activity2中处理数据**:在...
在调用startActivity()方法前,我们使用ActivityOptions.makeSceneTransitionAnimation()方法来创建一个包含动画选项的Bundle对象,并将其传给startActivity()。 ```java Intent intent = new Intent...
9. `onActivityResult(int requestCode, int resultCode, Intent data)`:当Activity收到一个结果并回传给Fragment时调用,常用于启动其他Activity后接收返回的数据。 除了与Activity的交互,Fragment间的数据传递...
Fragment有自己的生命周期,并且可以独立于Activity进行操作,但它们仍然依赖Activity来执行某些关键任务,比如启动新的Intent或者接收广播。 在Fragment A中,我们通常会有一个按钮(Button)作为触发事件的组件。...
1. **Intent**:虽然Intent主要用于Activity之间的通信,但也可以用在Fragment向Activity传递数据,只需通过`getActivity().startActivityForResult()`启动一个新的Activity,并在返回结果时处理。 2. **...
要实现点击返回键返回上一个Fragment,首先我们需要在添加新的Fragment到Activity时,将其添加到回退栈中。这可以通过`FragmentManager`的`beginTransaction()`方法实现。以下是一个示例: ```java FragmentManager...
// 启动Activity startActivity(intent); ``` 在Fragment内部,`getActivity()`方法用于获取当前Fragment所在的Activity实例,然后我们可以通过这个实例来启动新的Activity。 而从Activity跳转到Fragment则稍微...
本篇将深入探讨Activity和Fragment的生命周期,并通过提供的"LifecycleLog"测试代码进行实践分析。 Activity生命周期包括创建、启动、运行、暂停、停止和销毁等阶段。这些阶段构成了一个完整的生命周期流程,开发者...
Fragment可以理解为一个可插入到Activity中的小型Activity,允许开发者将UI拆分为更小、更可管理的部分。在本文中,我们将深入探讨Fragment的使用以及它的生命周期。 ### Fragment的基本用法 1. **创建Fragment** ...
7. **保存和恢复状态**:在处理屏幕旋转或其他可能导致Activity重建的事件时,需要确保Fragment能够正确保存和恢复其状态,以免用户丢失进度。 8. **测试与调试**:由于Fragment嵌套和切换可能带来的复杂性,测试和...
在Android应用开发中,Activity和Fragment是两个核心组件,它们共同构建了用户界面并管理着应用的状态。Activity作为应用程序中的单个屏幕,而Fragment则可以看作是Activity的一部分,可以在多个Activity之间重用。...
5. **保存和恢复状态**:为了保证用户在切换应用或者设备旋转后,仍然能够返回到之前的状态,我们需要在Activity中处理保存和恢复状态。使用`onSaveInstanceState()`和`onCreate(Bundle savedInstanceState)`方法来...