如何将活动中的数据发送回片段

时间:2016-03-17 15:14:26

标签: android android-fragments

我对如何在片段和活动之间发送数据感到困惑,因为我发现如何在活动甚至片段之间发送数据,但不是从片段调用的活动中发送数据(我认为这是不同的,因为我尝试了那些方法但它们没有用。)

在我的情况下,我想从片段开始一个新活动,并将一些数据(从时间戳)的时间发送回启动活动的片段。

基本上我的问题是,

如何从扩展片段的类中启动一个新的Activity?

然后,如何将数据发送回片段。

2 个答案:

答案 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 
    }
}