![](/img/trans.png)
[英]How to send data from Fragment back to Activity using MVP pattern
[英]how to send data from an activity back to a fragment
我對如何在片段和活動之間發送數據感到非常困惑,因為我發現了如何在活動甚至片段之間發送數據,而不是從從片段調用的活動中發送數據(我認為這是不同的,因為我嘗試了這些方法他們沒有工作)。
在我的情況下,我想從一個片段開始一個新的活動,並將一些數據(來自時間選擇器的時間)發送回啟動該活動的片段。
所以基本上我的問題是,
如何從擴展片段的類啟動新活動?
然后,如何將數據發送回片段。
從片段開始活動,為您提供一些結果; 您可以使用startActivityForResult
:
例如:
public class YourFragment extends Fragment {
private static final int REQUEST_GET_DATA_FROM_SOME_ACTIVITY = 1;
//start activity for result
....
Intent intent = new Intent(getActivity(),SomeActivity.class);
startActivityForResult(intent,REQUEST_GET_DATA_FROM_SOME_ACTIVITY)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_GET_DATA_FROM_SOME_ACTIVITY && resultCode == Activity.RESULT_OK) {
Bundle extras = data.getExtras();
//get data from extras
}
}
}
在你的活動中
public class SomeActivity extends Activity {
//complete process and deliver result
........
Intent resultIntent = new Intent();
resultIntent .putExtra("extra","put anything");
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
}
在片段中聲明一個field
(您將在下面看到用法)
private static int RC_SOME_ACTIVITY = 101;
從片段開始活動
startActivityForResult(new Intent(getContext(), SomeActivity.class), RC_SOME_ACTIVITY);
在開始的活動中發送數據
Intent data = new Intent();
// add data to intent
setResult(RESULT_OK, data);
finish();
在您的片段中,您需要覆蓋onActivityResult
以提取數據
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_SOME_ACTIVITY && resultCode == RESULT_OK) {
// extract data
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.