我对如何在片段和活动之间发送数据感到困惑,因为我发现如何在活动甚至片段之间发送数据,但不是从片段调用的活动中发送数据(我认为这是不同的,因为我尝试了那些方法但它们没有用。)
在我的情况下,我想从片段开始一个新活动,并将一些数据(从时间戳)的时间发送回启动活动的片段。
基本上我的问题是,
如何从扩展片段的类中启动一个新的Activity?
然后,如何将数据发送回片段。
答案 0 :(得分:1)
从片段开始活动,为你提供一些结果;你可以使用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();
}
}
答案 1 :(得分:0)
在片段中声明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
}
}