【问题标题】:Sending data from activity back to Fragment with finish function使用完成功能将数据从活动发送回片段
【发布时间】:2019-10-22 09:12:57
【问题描述】:

我曾尝试从从 Fragment 实例化的 Activity 发送数据。将数据从 Activity 发送回 Fragment。我尝试了以下代码

片段:

Instantiated the Fragment
    Intent intent = new Intent(Fragement.this,Activity);
    startActivity(intent);

活动:

Intent intent = new Intent(Activitiy.this, Fragment);
                intent.putExtra("Sent", "Something");
                setResult(RESULT_OK, intent);
                finish();

将结果发送到片​​段

In Fragment trying to implement onActivityResult but not even able to define the method.

【问题讨论】:

  • 您可以使用视图模型并观察活动中的数据

标签: android android-fragments android-intent


【解决方案1】:

使用startActivityForResult 调用您的活动,如下所示

Intent intent = new Intent(Fragement.this, Activity);
startActivityForResult(intent, 1);

要获得结果,请在您的片段中实现 onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK && requestCode == 1) {
        // here you can retrieve your bundle data.
        String yourdata = data.getStringExtra("Sent");
    }
}

在您的activity 中,请关注以下内容。

Intent intent = new Intent();
resultIntent.putExtra("Sent", "String data"); 
setResult(RESULT_OK, intent );
finish();

非常重要

你必须在你的Activity中overrideonActivityResult(在哪个片段被加载)

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       super.onActivityResult(requestCode, resultCode, data);
    }

完整示例,see this

【讨论】:

  • 在 Fragment ActivityResult 中没有覆盖
  • 现在开始工作
【解决方案2】:

您必须通过 startActviityForResult 传递请求代码来启动活动

Intent intent = new Intent(Fragement.this, Activity);
startActivityForResult(intent, myRequestCode);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多