【问题标题】:Android - getIntent() from a FragmentAndroid - 片段中的 getIntent()
【发布时间】:2015-01-12 10:06:19
【问题描述】:

我正在尝试将位图从一个片段传递到另一个片段——并使用这篇文章作为指导:

send Bitmap using intent Android

我遇到的问题是使用 getIntent() 接收活动片段。它不识别该方法。有一些帖子说它不可能在片段中使用 getIntent() ......但必须有办法吗?代码应该放在宿主活动中吗?

这是我正在尝试的:

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

    String filename = getIntent().getStringExtra("image");
    try {
        FileInputStream is = this.openFileInput(filename);
        imageBitmap = BitmapFactory.decodeStream(is);
        is.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

【问题讨论】:

    标签: android android-intent android-fragments


    【解决方案1】:

    您可以将getIntent()Fragments 一起使用,但您需要先致电getActivity()。像getActivity().getIntent().getExtras().getString("image") 这样的东西可以工作。

    【讨论】:

      【解决方案2】:

      不是你不能传递数据,而是你不想传递。

      来自片段documentation

      通常你会希望一个 Fragment 与另一个 Fragment 进行通信,因为 基于用户事件更改内容的示例。全部 片段到片段的通信是通过关联的 活动。两个 Fragment 永远不应该直接通信。

      如果您查看Fragment 文档,它应该会引导您了解如何执行此操作。

      【讨论】:

      • 投赞成票不是因为它解决了问题,而是正确的方法。您应该使用活动作为让片段相互通信的“媒介”。
      【解决方案3】:

      您也可以通过 Fragment 使用 setArguments()getArguments() 来实现此目的,如下所示:

      MyFragment fragment = new MyFragment();
      Bundle bundle = new Bundle();
      bundle.putString("image", fileName);
      fragment.setArguments(bundle);//Here pass your data
      

      现在在您的片段类中,例如在onCreate()onCreateView() 中执行以下操作:

      String fileName = this.getArguments().getString("image");
      

      【讨论】:

      • 是的,它的名字是Arguments。我会记住的。谢谢
      【解决方案4】:

      如果你想获取 Intent 数据,你必须调用 Fragment's 方法 getArguments(),它返回 Bundle 和附加值。

      【讨论】:

      • 片段没有直接的 getArguments()。它们是 getActivity() 的属性
      【解决方案5】:

      要获得额外的意图,请在片段中编写此代码

      if (requireActivity().intent.hasExtra("key_name")) {
          val extra = requireActivity().intent.getStringExtra("key_name")
      }
      

      【讨论】:

        猜你喜欢
        • 2017-09-10
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多