【问题标题】:How to properly change fragments after startActivity(intent)?startActivity(intent)之后如何正确更改片段?
【发布时间】:2019-06-25 03:08:55
【问题描述】:

我在fragment 中,这是一个反馈表。当用户点击按钮时,它会从表单中获取数据并将其传递给一个电子邮件程序,在用户从startActivity(intent) 之后的列表中选择它后,该程序就会打开。

我的问题是,我不确定是否有办法获得反馈以了解第 3 方邮件程序何时完成或启动器是否被取消。

在我的示例中,如果您单击提交,然后单击 gmail,然后单击在 gmail 中发送并将其关闭,它会将您带回应用程序,所有数据仍在表单上。

我想将fragments 切换为谢谢fragment。我做了实验,很高兴如果您单击 bottom nav bar 中的不同图标并返回反馈 fragment,所有数据都会被清除。

谢谢您,我们将不胜感激。 肖恩·穆里根

附:没有代码,因为我觉得不需要它,我只需要知道要进入的方向以及任何代码 sn-pts(如果可以)来执行下一步。在intent之后更改fragments

【问题讨论】:

  • 你在使用 Intent 选择器吗?如果是这样,我认为这个post 可以帮助你。
  • 我不是故意使用选择器,选择器是在调用 startActivity(intent) 后自行发生的。我发布了调用意图的实际代码。谢谢
  • 我查看了您引用的解决方案,并且在所有代码中,在意图开始之后什么都没有。
  • 我假设您熟悉onActivityResult。在我看来,您需要这样做才能知道用户是否发送了反馈。
  • 我不知道 onActivityResult 或 startActivityForResult。我添加了新编写的代码,但仍然没有得到我认为会得到的结果。

标签: android android-fragments android-intent


【解决方案1】:
 public void sendFeedbackMessage(String subject, String message) {

        Intent messageIntent = new Intent(android.content.Intent.ACTION_SENDTO);
        messageIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
        messageIntent.setType("plain/text");
        messageIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
        messageIntent.setData(Uri.parse("mailto:foo@gmail.com"));
        startActivity(messageIntent);
        }

【讨论】:

    【解决方案2】:
    startActivityForResult(messageIntent,1000);
        }
    
    @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data){
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == RESULT_OK){
                if (requestCode == 1000){
                    Toast.makeText(getContext().getApplicationContext(),"You sent mail",Toast.LENGTH_SHORT).show();
                }
            }else{
                Toast.makeText(getContext().getApplicationContext(),"Mail Not Sent",Toast.LENGTH_SHORT).show();
                }
            }
    

    所以我查看了 startActivityForResult 和 onActivityResult 并将我的代码更改为上面的代码。然而,它什么都不做,只是邮件未发送。我确实发现 gmail for one 不支持这一点。我对此完全没问题,但选择器本身不应该返回一些东西,以便应用程序知道是否选择了应用程序或使用了取消或返回按钮?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多