【问题标题】:Returning data from activity to fragment将数据从活动返回到片段
【发布时间】:2019-02-25 13:09:37
【问题描述】:

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

【问题讨论】:

  • onActivityResult 可能会有所帮助!
  • startActuivityForResult/onActivityResult
  • 记得从带有片段上下文的片段开始活动,以便在片段中直接获取调用,如 MyFragment.this.startActivtiyForResult(intent,12);

标签: java android android-activity fragment


【解决方案1】:

1- 首先,您必须使用 startActivityForResult() 从片段中启动 Activity

2- 确保在 Activity 的 onActivityResult() 方法中调用 super.onActivityResult(如果您正在实现它)

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

【讨论】:

    【解决方案2】:

    要从您的活动中获取数据到您的意图,请将其作为额外的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多