【问题标题】:how to send data from activity to fragment when user clicks on back button in android?当用户单击android中的后退按钮时,如何将数据从活动发送到片段?
【发布时间】:2023-04-04 05:00:01
【问题描述】:

我有一个片段可以打开一个新的活动。当用户单击后退按钮时,如何将数据从该活动传递回片段? 我尝试创建一个新的Intent 并将数据放入其中然后调用setResult(),但Fragment 或FragmentActivity 在onActivityResult 中没有任何内容。我现在能想到的唯一方法是通过静态方法,但仍然想看看是否有正确的方法来做到这一点?

谢谢!

【问题讨论】:

标签: android android-fragments


【解决方案1】:

调用静态函数并分配不是一个合适的解决方案。您可以使用接口回调,也可以使用 startActivityForResult() 方法。

接口回调基本思路;

public class YourActivity extends Activity{

private MyListener mFragmentCallbackListener; 

  public YourActivity(MyListener listener){
   mFragmentCallbackListener = listener;
  } 

 @Override
 public void onBackPressed(){

 if(mFragmentCallbackListener != null){
   mFragmentCallbackListener.updateFragment(String data);
  }
 }

 public interface MyListener{
  void updateFragment(String data)
 }  
}

【讨论】:

  • 仍然无法让 startActivityForResult() 工作,所以我最终使用接口
【解决方案2】:

我有一个片段可以打开一个新的活动

使用startActivityForResult() 而不是startActivity() 开始您的活动

我已经尝试创建一个新的 Intent 并将数据放入其中然后调用 setResult(),但是 Fragment 或 FragmentActivity 在 onActivityResult 中都没有得到任何东西。

如果您使用的是startActivityForResult(),那么在您完成该活动后将调用onActivityResult()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2021-04-12
    • 2017-12-16
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多