启动电子邮件意图时出现ClassCastException

时间:2013-08-17 12:42:14

标签: java android eclipse android-intent classcastexception

我正在尝试使用电子邮件意图发送电子邮件。这是我的代码:

/** 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[]{"sando@live.se"});
    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粘贴为可读?)

可能是什么问题?

3 个答案:

答案 0 :(得分:2)

  

引起:java.lang.ClassCastException:android.widget.TextView   无法转换为android.widget.EditText

您显然正在尝试将TextView转换为无法使用的EditText。

我发现了两个可能的错误原因:

  
      
  • 有时候你使用Layout Creator对你的布局进行了大量的改动,IDE可能会有点困惑和混淆   的东西。请尝试清理项目

  •   
  • 你实际上是在做错误的演员。在这种情况下,检查您的代码并查看您是否意外   将TextView转换为EditText (您可能只是混合了一些视图ID )。例如,上面提到的一个引用ID不是EditText。请检查“R.id.contNick”,“R.id.contFeas”和“R.id.contTip”。

  •   

答案 1 :(得分:1)

  

引起:java.lang.ClassCastException:android.widget.TextView无法在com.sandtdevelopment.getrich.ContributeActivity.cont_sendEmail(ContributeActivity.java)中强制转换为android.widget.EditText ... :18)

您正试图在第18行将TextView投放到Editview

答案 2 :(得分:0)

您的EditText个实例在您的课程顶部显示时出现错误。您是否意外地将XML中的一个定义为XML中的TextView?您用来引用它的ID可能也是错误的。如果是这种情况并且您修复了它,那么您的错误就会消失。