这是第一次我会在教程如何使用以下URL创建Android上的应用程序:MyFirstApp抛出ClassCastException上MyFirstApp
当我跑了,我得到了我的堆栈跟踪一个ClassCastException通过logcat的这看起来像这样:
03-02 13:18:49.365: E/AndroidRuntime(1996): FATAL EXCEPTION: main
03-02 13:18:49.365: E/AndroidRuntime(1996): java.lang.IllegalStateException: Could not execute method of the activity
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.view.View$1.onClick(View.java:3044)
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.view.View.performClick(View.java:3511)
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.view.View$PerformClick.run(View.java:14105)
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.os.Handler.handleCallback(Handler.java:605)
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.os.Handler.dispatchMessage(Handler.java:92)
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.os.Looper.loop(Looper.java:137)
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.app.ActivityThread.main(ActivityThread.java:4424)
03-02 13:18:49.365: E/AndroidRuntime(1996): at java.lang.reflect.Method.invokeNative(Native Method)
03-02 13:18:49.365: E/AndroidRuntime(1996): at java.lang.reflect.Method.invoke(Method.java:511)
03-02 13:18:49.365: E/AndroidRuntime(1996): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-02 13:18:49.365: E/AndroidRuntime(1996): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-02 13:18:49.365: E/AndroidRuntime(1996): at dalvik.system.NativeStart.main(Native Method)
03-02 13:18:49.365: E/AndroidRuntime(1996): Caused by: java.lang.reflect.InvocationTargetException
03-02 13:18:49.365: E/AndroidRuntime(1996): at java.lang.reflect.Method.invokeNative(Native Method)
03-02 13:18:49.365: E/AndroidRuntime(1996): at java.lang.reflect.Method.invoke(Method.java:511)
03-02 13:18:49.365: E/AndroidRuntime(1996): at android.view.View$1.onClick(View.java:3039)
03-02 13:18:49.365: E/AndroidRuntime(1996): ... 11 more
03-02 13:18:49.365: E/AndroidRuntime(1996): Caused by: java.lang.ClassCastException: com.android.internal.view.menu.ActionMenuItemView cannot be cast to android.widget.TextView
03-02 13:18:49.365: E/AndroidRuntime(1996): at com.example.myfirstapp.MainActivity.sendMessage(MainActivity.java:34)
03-02 13:18:49.365: E/AndroidRuntime(1996): ... 14 more
这是引用类MainActivity中的sendMessage(View视图)方法。最初它看起来像这样:
public void sendMessage(View view)
{
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
但是,这引起了相同的ClassCastException问题。在我的研究中,我偶然发现了这篇文章: http://code.google.com/p/android/issues/detail?id=32941
哪些状态我应该用TextView对象更改EditText对象。我做到了。所以现在我的方法是这样的:
public void sendMessage(View view)
{
Intent intent = new Intent(this, DisplayMessageActivity.class);
//EditText editText = (EditText) findViewById(R.id.edit_message);
TextView tView = (TextView)findViewById(R.id.edit_message);
String message = tView.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
编译得很好。但是我仍然得到了与stacktrace日志中所述的相同的ClassCastException。我不知道如何解决这个问题。请指教。
艾伦
也见[构建一个简单的用户界面] [起始另一个活动](HTTP之前(http://developer.android.com/training/basics/firstapp/building-ui.html)训练部分://显影剂。 android.com/training/basics/firstapp/starting-activity.html) – 2013-03-03 17:52:30