将数据从活动返回到片段

时间:2019-02-25 13:09:38

标签: java android android-activity fragment

我正在打开片段视图触摸上的活动。如何将数据返回到打开活动的片段。

2 个答案:

答案 0 :(得分:0)

1-首先,您必须使用startActivityForResult()

从片段开始活动

2-确保在“活动”的super.onActivityResult方法中调用onActivityResult()(如果正在实现)

3-在片段中,您只需要实现onActivityResult()并根据需要处理结果

答案 1 :(得分:0)

要从活动中获取数据以达到您的意图,请像下面这样添加它:

Intent intent = new Intent(this, MyIntent.class);
intent.putExtra("aString", aString);
intent.putExtra("aSomething", customSerializableType);
startActivityForResult(intent, MY_REQUEST_ID);

在Intent中将其发布出来,例如:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...

    Intent intent = getIntent();

    String newString = intent.getStringExtra("aString");
    CustomSerializableType newSomething = intent.getSerializableExtra("aSomething");
}

根据您的意图将数据发送回:

private void done() {
    Intent intent = new Intent();
    intent.putExtra("aString", aString);
    intent.putExtra("aSomething", customSerializableType);

    setResult(Activity.RESULT_OK, intent);
    finish();
}

然后通过以下方式在托管活动中获取数据

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch (requestCode) {
    case MY_REQUEST_ID:
      if (resultCode == Activity.RESULT_OK) {
        String newString = data.getStringExtra("aString");
        CustomSerializableType newSomething = data.getSerializableExtra("aSomething");
      }
      break;
}