2016-02-24 2 views
0

Когда нажимается кнопка, вызывается метод sendemail(). когда я запускаю приложение на леденец, и когда кнопка нажата, приложение закрывается, и эффект намерения не просматривается.Код намерения электронной почты не работает

 protected void sendEmail() { 
    EditText email = (EditText) findViewById(R.id.email); 
    EditText customer = (EditText) findViewById(R.id.customer_name); 
    String mail_body = "Customer name=" + customer + " Cost" + cost + "\n    thank you :)\n have a great day ahead"; 
    Log.i("Send email", ""); 
    String to = email.getText().toString(); 

    Intent i = new Intent(Intent.ACTION_SEND); 
    i.setData(Uri.parse("mailto:")); 
    i.putExtra(Intent.EXTRA_EMAIL, to); 
    i.putExtra(Intent.EXTRA_SUBJECT, "ORDER SUMMARY FROM COFFEE SHOP"); 
    i.putExtra(Intent.EXTRA_TEXT, "this is just a test"); 
    i.setType("message/rfc822"); 

     startActivity(Intent.createChooser(i,"Send mail...")); 
    } 

это журнал ошибок, что я получил

02-24 20:59:31.140 13717-13717/example.com.coffee E/AndroidRuntime: FATAL EXCEPTION: main 
Process: example.com.coffee, PID: 13717 
java.lang.IllegalStateException: Could not find method send email(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:307) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:266) 
at android.view.View.performClick(View.java:4757) 
at android.view.View$PerformClick.run(View.java:19757) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5235) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 
функция
+0

'ACTION_SEND' не использует' setData() '. – CommonsWare

+0

можете ли вы вставить журнал ошибок? –

+0

Я удалил это, но все еще намерение не работает. plz help –

ответ

0

Изменение SendEmail в

protected void sendEmail(View v) { 
    EditText email = (EditText) findViewById(R.id.email); 
    EditText customer = (EditText) findViewById(R.id.customer_name); 
    String mail_body = "Customer name=" + customer + " Cost" + cost + "\n    thank you :)\n have a great day ahead"; 
    Log.i("Send email", ""); 
    String to = email.getText().toString(); 

    Intent intent = new Intent(Intent.ACTION_SEND) 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.setType("message/rfc822"); 
    intent.putExtra(Intent.EXTRA_EMAIL, new String[]{to}); 
    intent.putExtra(Intent.EXTRA_CC, new String[]{""}); 
    intent.putExtra(Intent.EXTRA_SUBJECT, "ORDER SUMMARY FROM COFFEE SHOP"); 
    intent.putExtra(Intent.EXTRA_TEXT, "this is just a test"); 
    startActivity(Intent.createChooser(intent, "Send mail...")); 
} 

и в XML добавить OnClick элемент со значением "SendEmail"

android:onClick="sendEmail" 
+0

спасибо за помощь! –

0

У меня есть два предложения:

  1. Измените метод подписи как void sendEmail(View v) в исходном файле.

  2. Редактируйте файл макета, в котором вы назначили атрибут onClick для кнопки. Я могу догадаться, что в вашем xml вы определили метод как: android:onClick="send email" и в файле src вы определили метод с именем sendEmail().

+0

спасибо за помощь –

Смежные вопросы