在startActivity(intent)之后如何正确更改片段?

时间:2019-06-25 03:08:55

标签: android android-fragments android-intent

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

我的问题是,我不确定是否可以通过某种方式获得反馈,以了解何时完成第三方邮件或启动器是否被取消。

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

我想将fragments切换为谢谢fragment。我做了实验,很高兴如果您在bottom nav bar中单击其他图标,然后返回到反馈fragment,则清除了所有数据。

谢谢您,所有帮助将不胜感激。 肖恩·穆里根(Shawn Mulligan)

P.S。没有代码,因为我不认为这是必需的,我只需要知道输入的方向和任何代码片段(如果有的话)即可进行下一步。在fragments之后更改intent

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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不支持此功能。我对此完全满意,但是选择器本身不应该返回什么,这样应用程序将知道选择了应用程序还是使用了取消或后退按钮?