OnActivityResult - 如果方法未完成,则不执行代码
问题描述:
我正在创建一个应用程序,在此过程的这一部分中,用户点击提交按钮,它将弹出询问他们想要使用哪个电子邮件客户端。OnActivityResult - 如果方法未完成,则不执行代码
当前,当我弹出取消弹出窗口时,它仍然会执行代码,如转到下一个活动并显示吐司消息。我想要的是,如果用户点击取消,它不会执行此操作,但如果他们发送电子邮件(或至少进入电子邮件客户端),则执行该代码。
下面是我当前的代码行:
public class Activity extends AppCompatActivity {
protected static final int EMAIL_SENT = 0;
我的意图让所有的电子邮件信息:
Intent email = new Intent(Intent.ACTION_SENDTO);
email.setData(Uri.parse("mailto:"));
email.putExtra(Intent.EXTRA_EMAIL, TO);
email.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.subject, name));
email.putExtra(Intent.EXTRA_TEXT, message);
startActivityForResult(Intent.createChooser(email, "Choose an Email client :"),0);
}
最后onActivity:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == EMAIL_SENT && resultCode == Activity.RESULT_OK) {
}else{
Intent submit = new Intent(this,HomeActivity.class);
startActivity(submit);
Toast toast = Toast.makeText(getApplicationContext(), "Request Submitted", Toast.LENGTH_LONG);
toast.show();
}
finish();
}
答
并非所有的活动支持结果返回意图。 特别是如果它是已知的系统活动。 你可以在你的onPause()& onResume()中做一些逻辑来检查数据是否发送(也许通过查询邮件的某个数据库表)。
答
据我了解,你只需要交换你的if-else块:
if (requestCode == EMAIL_SENT && resultCode == Activity.RESULT_OK)
{
Intent submit = new Intent(this,HomeActivity.class);
startActivity(submit);
Toast toast = Toast.makeText(getApplicationContext(), "Request Submitted", Toast.LENGTH_LONG);
toast.show();
}
else
{
}
+0
尝试过,现在它根本不执行代码,因为如果我点击取消按钮,甚至无法工作,出于某种原因,它只会在else块中才能工作。 – Hawkfan69
您没有通过'EMAIL_SENT'的请求的代码。你必须改变这个'startActivityForResult(Intent.createChooser(电子邮件,“选择一个电子邮件客户端:”,EMAIL_SENT);' – Piyush
我认为你错位了* else *块中的行。将它放在* if * block onActivityResult中并尝试? – Raghavendra
我试过这两种方法。把请求代码放在什么都不做。我交换了代码并将它放在if块中,但现在甚至没有进入HomeActivity.class,它只是回到前一个类(名为Selection)并且根本不执行代码。 – Hawkfan69