Android 如何将活动中的数据发送回片段
我对如何在片段和活动之间发送数据感到非常困惑,因为我发现了如何在活动甚至片段之间发送数据,而不是从从片段调用的活动发送数据(我认为这是不同的,因为我尝试了这些方法,但它们不起作用) 在我的例子中,我想从一个片段开始一个新的活动,并将一些数据(来自时间选择器的时间)发送回启动该活动的片段 所以基本上我的问题是 如何从扩展片段的类启动新活动Android 如何将活动中的数据发送回片段,android,android-fragments,Android,Android Fragments,我对如何在片段和活动之间发送数据感到非常困惑,因为我发现了如何在活动甚至片段之间发送数据,而不是从从片段调用的活动发送数据(我认为这是不同的,因为我尝试了这些方法,但它们不起作用) 在我的例子中,我想从一个片段开始一个新的活动,并将一些数据(来自时间选择器的时间)发送回启动该活动的片段 所以基本上我的问题是 如何从扩展片段的类启动新活动 然后,如何将数据发送回片段。在片段中声明一个字段(您将看到下面的用法) 从片段开始活动 startActivityForResult(new Intent(ge
然后,如何将数据发送回片段。在片段中声明一个
字段(您将看到下面的用法)
从片段开始活动
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
}
}
从片段开始活动,将结果反馈给您;您可以使用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();
}
}
startActivityForResult是您在片段imho中可能需要的
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();
}
}