我的应用程序中设置了电子邮件意图,并且我试图在发送电子邮件后向用户敬酒。
这是"系统流程">
用户单击按钮 -显示>电子邮件选择器 ->客户端发送电子邮件 ->"发送电子邮件"通用 Toast 显示 -> 自定义 Toast
我尝试将 toast 语法放在电子邮件意图和 onPause 方法之后。
谁能帮助我?这是我的示例代码。
法典:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class ScheduleService extends Activity implements View.OnClickListener {
EditText serviceTime, serviceNeeded, vehicleYear, vehicleMake, personsFirstName, personsLastName, personsEmail,
personsPhone, comments, vehicleModel;
// Spinner serviceTime, serviceNeeded;
TextView serviceDate;
String fname, lname, phoneNumber, vehicleYears, vehicleModeltrim, vehicleManu, serviceAppointment,
serviceAppointmentTime, serviceTypeNeeded, extraComments, emailAdd, emailaddress, message;
Button sendEmail, PickDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.service);
initializeVars();
sendEmail.setOnClickListener(this);
}
// Use the following commented fields for future Spinner properties
private void initializeVars() {
// TODO Auto-generated method stub
personsFirstName = (EditText) findViewById(R.id.firstName);
personsLastName = (EditText) findViewById(R.id.lastName);
personsEmail = (EditText) findViewById(R.id.Email);
personsPhone = (EditText) findViewById(R.id.PhoneNumber);
// vehicleYear = (Spinner) findViewById(R.id.sYear);
// vehicleMake = (Spinner) findViewById(R.id.sMake);
vehicleYear = (EditText) findViewById(R.id.tYear);
vehicleMake = (EditText) findViewById(R.id.tMake);
vehicleModel = (EditText) findViewById(R.id.Model);
serviceDate = (TextView) findViewById(R.id.tpickDate);
// serviceTime = (Spinner) findViewById(R.id.sTime);
// serviceNeeded = (Spinner) findViewById(R.id.sNeeded);
serviceTime = (EditText) findViewById(R.id.tTime);
serviceNeeded = (EditText) findViewById(R.id.tNeeded);
comments = (EditText) findViewById(R.id.eComments);
sendEmail = (Button) findViewById(R.id.bSentEmail);
// PickDate = (Button) findViewById(R.id.pickDate);
}
public void onClick(View v) {
// TODO Auto-generated method stub
conversion();
String emailaddress[] = { "email@example.com" };
String message = "Please Review the following" + 'n' + " " + 'n' + "First Name: " + fname + 'n'
+ "Last Name: " + lname + 'n' + "Email :" + emailAdd + 'n' + "Phone Number: " + phoneNumber + 'n'
+ "Vechile Year: " + vehicleYears + 'n' + "Vehicle Make: " + vehicleManu + 'n' + "Vehicle Model: "
+ vehicleModeltrim + 'n' + "Requested Service Date: " + serviceAppointment + 'n'
+ "Requested Service Time: " + serviceAppointmentTime + 'n' + "Service Needed: " + serviceTypeNeeded
+ 'n' + "Comments: " + extraComments;
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("vnd.android.cursor.dir/email");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "email@example.com" });
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Schedule Service Request");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
startActivity(Intent.createChooser(emailIntent, "Please select Email Client"));
Toast.makeText(ScheduleService.this, R.string.myString, Toast.LENGTH_SHORT).show();
}
private void conversion() {
// TODO Auto-generated method stub
fname = personsFirstName.getText().toString();
lname = personsLastName.getText().toString();
emailAdd = personsEmail.getText().toString();
phoneNumber = personsPhone.getText().toString();
vehicleYears = vehicleYear.getText().toString();// Text field substitute
// for spinner adapter
vehicleManu = vehicleMake.getText().toString(); // Text field substitute
// for spinner adapter
// vehicleYears = (String) vehicleYear.getAdapter().getItem(RESULT_OK);
// vehicleManu = (String) vehicleMake.getAdapter().getItem(RESULT_OK);
vehicleModeltrim = vehicleModel.getText().toString();
serviceAppointment = serviceDate.getText().toString();
serviceAppointmentTime = serviceTime.getText().toString();
serviceTypeNeeded = serviceNeeded.getText().toString();
// serviceAppointmentTime = (String) serviceTime.getAdapter().getItem(
// RESULT_OK);
// /serviceTypeNeeded = (String) serviceNeeded.getAdapter().getItem(
// RESULT_OK);
extraComments = comments.getText().toString();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
finish();
}
}
更新:我想我误解了你的问题; 据我现在所知,您希望在发送电子邮件并显示电子邮件应用程序的 Toast 后出现您的 Toast?如果是这种情况,请尝试以下操作:
首先从onPause()
方法中删除finish()
。
然后,将您的startActivity
替换为startActivityForResult
,这需要额外的参数requestCode
。requestCode
用于分离不同活动的结果。
startActivityForResult(Intent.createChooser(emailIntent, "Please select Email Client"),
MY_REQUEST_CODE); // MY_REQUEST_CODE is some constant int >= 0
最后添加以下代码以接收来自startActivityForResult
的结果。在这里,您可以根据结果决定显示哪个 Toast。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("SS", "onActivityResult: " + requestCode + ", " + resultCode + ", "
+ (data != null ? data.toString() : "empty intent"));
if(requestCode == MY_REQUEST_CODE) {
if(resultCode == RESULT_OK) {
Toast.makeText(getApplicationContext(), R.string.myString,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), R.string.myOtherString,
Toast.LENGTH_SHORT).show();
}
}
finish(); // to end your activity when toast is shown
}
如果这是您真正需要的,很抱歉,我一开始没有清楚地看到您的问题。
旧思想:
下面是一个小应用程序,它仅快捷方式您的手动操作(按钮(以发送电子邮件意图。这对我来说很好用。如果这也适合您,那么也许您从按下按钮调用"发送意图"方法的方式有一些怪癖。
package my.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class AndroidTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast.makeText(AndroidTestActivity.this, "Welcome toast", Toast.LENGTH_SHORT).show();
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("vnd.android.cursor.dir/email");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"bfdk@dgfsgfds.dfs"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Schedule Service Request");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Message goes here");
startActivity(Intent.createChooser(emailIntent, "Please select Email Client"));
Toast.makeText(AndroidTestActivity.this, R.string.myString, Toast.LENGTH_SHORT).show();
}
@Override
protected void onPause() {
super.onPause();
finish();
Toast.makeText(getApplicationContext(), "Pause toast", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Destroy toast", Toast.LENGTH_SHORT).show();
}
}