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();
   }
}