我有一个// The rest of the code is the same
void openDropdown() {
_dropdownButtonKey.currentContext.visitChildElements((element) {
if (element.widget != null && element.widget is Semantics) {
element.visitChildElements((element) {
if (element.widget != null && element.widget is Actions) {
element.visitChildElements((element) {
Actions.invoke(element, Intent(ActivateAction.key));
return false;
});
}
});
}
});
}
A ,其中有一个Activity
和一个Fragment
B 。
当我单击片段内的按钮时,活动 B 开始,并且我假设活动 A 为Activity
。
我想做的是单击活动 B 中的按钮,该按钮将onPause
进行此活动,然后返回到活动 A 。
这样做将自动在片段内调用一个方法。经过研究,我尝试实现finish()
和Fragment事务,但是我总是得到空对象。
在这种配置下,如何使我的活动进行交流并将信息传递给片段?
答案 0 :(得分:1)
从ActivityB
(属于FragmentA
的一部分)以ActivityA
呼叫startActivityForResult()
,而不是startActivity()
呼叫。
使用此方法,您可以将结果从Activity B
传递回Fragment A
。
Fragment A
(ActivityA
的一部分):
// 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
}
}
重要点:Fragment A
是调用startActivityForResult()的那个,但它是Activity A
的一部分,因此Activity A
获得了第一枪处理结果。它必须调用super.onActivityResult()
,以便回调可以到达Fragment A
在Activity A
中:
@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
}
从Activity B
设置结果:
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();
参考: