Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 强制转换异常android.widget.TextView_Java_Android_Fatal Error_Classcastexception - Fatal编程技术网

Java 强制转换异常android.widget.TextView

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

我是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.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
方法中的语句。这意味着resource
timer\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);