Java 强制转换异常android.widget.TextView
我是android开发的新手,在尝试创建可编辑文本视图时遇到以下异常 下面是异常的完整堆栈跟踪Java 强制转换异常android.widget.TextView,java,android,fatal-error,classcastexception,Java,Android,Fatal Error,Classcastexception,我是android开发的新手,在尝试创建可编辑文本视图时遇到以下异常 下面是异常的完整堆栈跟踪 09-17 01:25:14.749: E/AndroidRuntime(8436): FATAL EXCEPTION: main 09-17 01:25:14.749: E/AndroidRuntime(8436): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.timer/com.exa
09-17 01:25:14.749: E/AndroidRuntime(8436): FATAL EXCEPTION: main
09-17 01:25:14.749: E/AndroidRuntime(8436): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.timer/com.example.timer.TimerHomeActivity}: java.lang.ClassCastException: android.widget.TextView
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.os.Handler.dispatchMessage(Handler.java:99)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.os.Looper.loop(Looper.java:130)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.app.ActivityThread.main(ActivityThread.java:3687)
09-17 01:25:14.749: E/AndroidRuntime(8436): at java.lang.reflect.Method.invokeNative(Native Method)
09-17 01:25:14.749: E/AndroidRuntime(8436): at java.lang.reflect.Method.invoke(Method.java:507)
09-17 01:25:14.749: E/AndroidRuntime(8436): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
09-17 01:25:14.749: E/AndroidRuntime(8436): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
09-17 01:25:14.749: E/AndroidRuntime(8436): at dalvik.system.NativeStart.main(Native Method)
09-17 01:25:14.749: E/AndroidRuntime(8436): Caused by: java.lang.ClassCastException: android.widget.TextView
09-17 01:25:14.749: E/AndroidRuntime(8436): at com.example.timer.TimerHomeActivity.onCreate(TimerHomeActivity.java:23)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-17 01:25:14.749: E/AndroidRuntime(8436): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
09-17 01:25:14.749: E/AndroidRuntime(8436): ... 11 more
代码如下:
public class TimerHomeActivity extends Activity implements OnClickListener {
public void onClick(View v) {
TextView tv = (TextView)findViewById(R.id.timer_1);
tv.setText("Hi");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timer_home);
Button timer1 = (Button)findViewById(R.id.timer_1);
timer1.setOnClickListener(this);
}
}
检查您的资源ID。您两次加载相同的资源ID,一次将其转换为
文本视图
,一次将其转换为按钮
:
TextView tv = (TextView)findViewById(R.id.timer_1);
及
它应该对应于一个小部件,而另一个小部件将抛出一个ClassCastException
由于异常在启动活动时发生,因此导致异常的语句应该是
onCreate
方法中的语句。这意味着resourcetimer\u 1
不是一个按钮,而是一个TextView
(如异常消息所示,它在您的帖子中似乎被截断了)。TextView tv=(TextView)findViewById(R.id.timer\u 1);按钮计时器1=(按钮)findViewById(R.id.timer_1);也许这就是问题所在?Button和TextView都有相同的id问题似乎是Button timer1=(Button)findViewById(R.id.timer_1);即使在TextView tv=(TextView)findViewById(R.id.timer_1)时;如果删除,则会引发相同的异常。如果您发布更多的异常堆栈跟踪,这会有所帮助。我已经发布了完整的堆栈跟踪。@Jasher,这是因为timer_1是一个文本视图,所以当您将其强制转换为按钮时,您会得到异常。检查资源XML中的timer_1,确保使用了正确的ID。您不能将文本视图
强制转换为按钮
,但是,您可以将单击侦听器
添加到文本视图
(或任何视图
),或将按钮
强制转换为文本视图
(按钮
扩展文本视图
)
Button timer1 = (Button)findViewById(R.id.timer_1);