`
Everyday都不同
  • 浏览: 723616 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

启动其他Activity的Fragment并返回结果

阅读更多

本人最近在开发类似订票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,以及如何从Fragment返回到另一个Activity。 首先,我们来看如何从一个Activity启动Fragment。在Android中,Fragment不能直接启动,它必须嵌套在Activity中。...

    android Activity与Fragment

    在Android应用开发中,Activity和Fragment是两个至关重要的组件,它们构成了用户界面的主要部分,并管理着应用程序的行为。本文将深入探讨这两个概念,以及它们在不同场景下的生命周期。 首先,Activity是Android...

    Fragment与Activity之间通信实例

    4. **onActivityResult(int, int, Intent)**:当Fragment启动一个新的Activity并期待结果时,可以通过startActivityForResult()方法。在Activity处理完结果后,通过onActivityResult()返回数据给Fragment。 5. **...

    Activity和Fragment生命周期研究

    在Android应用开发中,Activity和Fragment是两个至关重要的组件,它们构成了用户界面的主要部分,并各自拥有独特的生命周期。本文将深入探讨Activity和Fragment的生命周期,帮助开发者更好地理解和掌握这两个组件的...

    fragment activity与fragment相互传值 fragment与fragment跳转

    然而,由于Fragment并不直接通过Intent启动,因此这种方式通常用于Activity启动另一个Activity时传递数据给新的Fragment。 2. **通过setArguments()和getArguments()**: 这是最常用的方法,创建Fragment时,可以...

    Fragment的介绍,以及Fragment与Activity之间的通信

    2. **Fragment的onActivityResult()**:当Fragment启动一个Intent并需要接收结果时,可以重写onActivityResult()方法。Activity接收到结果后,通过调用Fragment的onActivityResult()传递回结果。 3. **使用 Bundle*...

    关于Activity与Fragment混用中对于startActivityForResult方法的解析示例

    一种常见的做法是添加一个接口到Fragment,由Activity实现这个接口,这样Fragment可以通过接口方法来启动Activity并处理结果: ```java public interface OnFragmentInteractionListener { void ...

    fragment,activity之随意切换

    在设计复杂的、多屏幕的应用时,理解并熟练掌握Fragment和Activity之间的交互是至关重要的。本文将深入探讨Fragment之间的切换以及Fragment与Activity之间的切换,以帮助开发者提升应用的用户体验。 Fragment的切换...

    两个Fragment分别在各自的Activity上的交互

    3. **启动Activity并获取结果**:使用`startActivityForResult()`启动Activity2,并传入请求码。 ```java getActivity().startActivityForResult(intent, requestCode); ``` 4. **在Activity2中处理数据**:在...

    Activity之间以及fragment之间跳转 共享元素动画实现

    在调用startActivity()方法前,我们使用ActivityOptions.makeSceneTransitionAnimation()方法来创建一个包含动画选项的Bundle对象,并将其传给startActivity()。 ```java Intent intent = new Intent...

    Fragment回调接口

    9. `onActivityResult(int requestCode, int resultCode, Intent data)`:当Activity收到一个结果并回传给Fragment时调用,常用于启动其他Activity后接收返回的数据。 除了与Activity的交互,Fragment间的数据传递...

    Fragment之间通过Activity通信

    Fragment有自己的生命周期,并且可以独立于Activity进行操作,但它们仍然依赖Activity来执行某些关键任务,比如启动新的Intent或者接收广播。 在Fragment A中,我们通常会有一个按钮(Button)作为触发事件的组件。...

    Fragment与Activity通信的小例子

    1. **Intent**:虽然Intent主要用于Activity之间的通信,但也可以用在Fragment向Activity传递数据,只需通过`getActivity().startActivityForResult()`启动一个新的Activity,并在返回结果时处理。 2. **...

    Android中返回上一个Fragment

    要实现点击返回键返回上一个Fragment,首先我们需要在添加新的Fragment到Activity时,将其添加到回退栈中。这可以通过`FragmentManager`的`beginTransaction()`方法实现。以下是一个示例: ```java FragmentManager...

    fragment和activity间的跳转

    // 启动Activity startActivity(intent); ``` 在Fragment内部,`getActivity()`方法用于获取当前Fragment所在的Activity实例,然后我们可以通过这个实例来启动新的Activity。 而从Activity跳转到Fragment则稍微...

    Android Activity和Fragment的生命周期测试代码

    本篇将深入探讨Activity和Fragment的生命周期,并通过提供的"LifecycleLog"测试代码进行实践分析。 Activity生命周期包括创建、启动、运行、暂停、停止和销毁等阶段。这些阶段构成了一个完整的生命周期流程,开发者...

    Fragment使用详解

    Fragment可以理解为一个可插入到Activity中的小型Activity,允许开发者将UI拆分为更小、更可管理的部分。在本文中,我们将深入探讨Fragment的使用以及它的生命周期。 ### Fragment的基本用法 1. **创建Fragment** ...

    层叠式fragment+activity组合使用

    7. **保存和恢复状态**:在处理屏幕旋转或其他可能导致Activity重建的事件时,需要确保Fragment能够正确保存和恢复其状态,以免用户丢失进度。 8. **测试与调试**:由于Fragment嵌套和切换可能带来的复杂性,测试和...

    Android Activity ABC页面跳转生命周期变化及activity + fragment生命周期变化

    在Android应用开发中,Activity和Fragment是两个核心组件,它们共同构建了用户界面并管理着应用的状态。Activity作为应用程序中的单个屏幕,而Fragment则可以看作是Activity的一部分,可以在多个Activity之间重用。...

    底部切换标签 Activity+子fragment

    5. **保存和恢复状态**:为了保证用户在切换应用或者设备旋转后,仍然能够返回到之前的状态,我们需要在Activity中处理保存和恢复状态。使用`onSaveInstanceState()`和`onCreate(Bundle savedInstanceState)`方法来...

Global site tag (gtag.js) - Google Analytics