2013-08-17 2 views
2

Я пытаюсь отправить электронное письмо с использованием намерений электронной почты. Это мой код:ClassCastException при запуске E-Mail Intent

/** Called when the user clicks the send button */ 
public void cont_sendEmail(View view) { 
     final EditText nick = (EditText) findViewById(R.id.contNick); 
     final EditText feas = (EditText) findViewById(R.id.contFeas); 
     final EditText tip = (EditText) findViewById(R.id.contTip); 
     String totalNick = nick.getText().toString(); 
     String totalFeas = feas.getText().toString(); 
     String totalTip = tip.getText().toString(); 
     String totalText = totalNick.concat(totalFeas); 


    // Do something in response to button 
    Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("message/rfc822"); 
    i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
    i.putExtra(Intent.EXTRA_SUBJECT, "New contribution!"); 
    i.putExtra(Intent.EXTRA_TEXT , totalText); 
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    try { 
     startActivity(Intent.createChooser(i, "Send mail...")); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(ContributeActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
    } 
} 

При нажатии на кнопку «отправить» и активирует cont_sendEmail, приложение аварий. Это мой LogCat:

08-17 14:29:16.445: E/AndroidRuntime(12649): FATAL EXCEPTION: main 
08-17 14:29:16.445: E/AndroidRuntime(12649): java.lang.IllegalStateException: Could not execute method of the activity 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.view.View$1.onClick(View.java:3691) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.view.View.performClick(View.java:4211) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.view.View$PerformClick.run(View.java:17267) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.os.Handler.handleCallback(Handler.java:615) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.os.Handler.dispatchMessage(Handler.java:92) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.os.Looper.loop(Looper.java:137) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.app.ActivityThread.main(ActivityThread.java:4898) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at java.lang.reflect.Method.invokeNative(Native Method) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at java.lang.reflect.Method.invoke(Method.java:511) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at dalvik.system.NativeStart.main(Native Method) 
08-17 14:29:16.445: E/AndroidRuntime(12649): Caused by: java.lang.reflect.InvocationTargetException 
08-17 14:29:16.445: E/AndroidRuntime(12649): at java.lang.reflect.Method.invokeNative(Native Method) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at java.lang.reflect.Method.invoke(Method.java:511) 
08-17 14:29:16.445: E/AndroidRuntime(12649): at android.view.View$1.onClick(View.java:3686) 
08-17 14:29:16.445: E/AndroidRuntime(12649): ... 11 more 
08-17 14:29:16.445: E/AndroidRuntime(12649): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText 
08-17 14:29:16.445: E/AndroidRuntime(12649): at com.sandtdevelopment.getrich.ContributeActivity.cont_sendEmail(ContributeActivity.java:18) 

(Как вставить LogCat быть читаемым?)

Что может быть проблема?

+1

Проблема в том, прямо в трассировки стека: ClassCastException. Вы пытаетесь применить TextView к EditText. Вероятно, это происходит в одной из строк findViewById. – tiguchi

+0

Для форматирования logcat используйте формат кода, то есть отступ 4 пробела, или используйте кнопку '{}' в редакторе. – laalto

+0

Ха, ну посмотрите на это. Даже не смотрел файл xml. Изменен TextView на EditText, и он отлично работает! Благодаря! – andysando

ответ

0

Возможно, у вас возникла ошибка с литьем ваших EditText экземпляров в верхней части вашего класса. Вы случайно определили один из трех в качестве TextView в своем XML? Идентификатор, который вы используете для ссылки на него, возможно, также может быть неправильным. Если это так, и вы это исправите, ваша ошибка должна исчезнуть.

+0

Да, это именно то, что я сделал, я определил его как TextView вместо EditText. Проблема решена, спасибо! – andysando

1

Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText ... at com.sandtdevelopment.getrich.ContributeActivity.cont_sendEmail(ContributeActivity.java:18)

Вы пытаетесь бросить TextView к Editview на линии 18

2

Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText

Вы, очевидно, пытается бросить TextView к EditText, который не может работать.

я вижу две возможные причины этой ошибки:

  • Sometimes whean your are doing heavy changes on your layout using the Layout Creator the IDE can get a little confused and mix up things. Please try CLEANING your project.

  • You are actually making the misstake of doing the wrong Cast. In this case, check your code and see if you are accidentially casting a TextView to an EditText (it is possible that you simply mixed up some View IDs). It could for example be the case that one of your referenced IDs above is not an EditText. Please check "R.id.contNick", "R.id.contFeas" and "R.id.contTip".

+0

Большое спасибо за ответ. Я нашел проблему, и это как я случайно использовал TextView вместо EditText в xml. :) – andysando

+0

Да, конечно, хотя я не могу оценить это, у нас нет 15 репутации. – andysando

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