Android fragments 从另一个活动调用活动内的片段方法
我有一个Android fragments 从另一个活动调用活动内的片段方法,android-fragments,android-activity,Android Fragments,Android Activity,我有一个活动A和一个片段和一个活动B 当我单击片段内的按钮时,活动B正在启动,我假设活动a是onPause 我想做的是单击活动B中的一个按钮,该按钮将finish()此活动,然后返回活动a 这样做会自动调用片段内部的方法。经过研究,我尝试实现接口和片段事务,但总是得到空对象 如何使我的活动进行通信并将信息传递给此配置中的片段 从FragmentA(属于ActivityA)调用ActivityB,作为startActivityForResult()调用,而不是startActivity()调用 使
活动
A和一个片段
和一个活动
B
当我单击片段内的按钮时,活动B正在启动,我假设活动a是onPause
我想做的是单击活动B中的一个按钮,该按钮将finish()
此活动,然后返回活动a
这样做会自动调用片段内部的方法。经过研究,我尝试实现接口
和片段事务,但总是得到空对象
如何使我的活动进行通信并将信息传递给此配置中的片段 从
FragmentA
(属于ActivityA
)调用ActivityB
,作为startActivityForResult()
调用,而不是startActivity()
调用
使用此选项,您将能够将结果从活动B
传递回片段A
片段A
(活动A的一部分):
要点:片段A
是进行startActivityForResult()调用的片段,但它是活动A
的一部分,因此活动A
首先处理结果。它必须调用super.onActivityResult()
,以便回调可以到达片段A
在活动A中
:
// Calling Activity B
Intent intent = new Intent(this, ActivityB.class);
intent.putExtras(b);
startActivityForResult(intent, ANY_ID);
// Overriding callback for result
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ANY_ID && resultCode == Activity.RESULT_OK) {
// Your logic of receiving data from Activity B
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// This is required, in order to get onActivityResult callback in Fragment A
}
Intent resultIntent = new Intent();
// You can pass any data via this intent's bundle by putting as key-value pair
resultIntent.putExtra("Key", Value);
setResult(Activity.RESULT_OK, resultIntent);
finish();
从活动B设置返回的结果
:
// Calling Activity B
Intent intent = new Intent(this, ActivityB.class);
intent.putExtras(b);
startActivityForResult(intent, ANY_ID);
// Overriding callback for result
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ANY_ID && resultCode == Activity.RESULT_OK) {
// Your logic of receiving data from Activity B
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// This is required, in order to get onActivityResult callback in Fragment A
}
Intent resultIntent = new Intent();
// You can pass any data via this intent's bundle by putting as key-value pair
resultIntent.putExtra("Key", Value);
setResult(Activity.RESULT_OK, resultIntent);
finish();
参考: