【问题标题】:Android apps problems安卓应用问题
【发布时间】:2014-04-01 08:44:15
【问题描述】:

我一直在尝试开发一个应用程序。但是当我声明任何类 Button 甚至任何其他类的对象时,当我运行它时它会说“不幸的是应用程序已停止”。请帮忙。

xml 文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button3"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/timePicker1"
        android:layout_centerVertical="true"
        android:layout_marginRight="17dp"
        android:text="Set" />

    <AnalogClock
        android:id="@+id/analogClock1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="24dp" />

    <TimePicker
        android:id="@+id/timePicker2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/timePicker1"
        android:layout_below="@+id/analogClock1" />

    <TimePicker
        android:id="@+id/timePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

主 java 文件

包 com.example.quiet;

导入android.os.Bundle; 导入android.app.Activity;

导入android.view.Menu; 导入android.widget.Button;

公共类 MainActivity 扩展 Activity {

int hour;
int minute;
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn1=(Button)findViewById(R.id.button3);



}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

日志

   02-28 17:06:42.917: E/AndroidRuntime(18977): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.quiet/com.example.quiet.MainActivity}: java.lang.ClassCastException: android.widget.TimePicker cannot be cast to android.widget.Button
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.os.Looper.loop(Looper.java:137)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.ActivityThread.main(ActivityThread.java:4424)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at java.lang.reflect.Method.invokeNative(Native Method)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at java.lang.reflect.Method.invoke(Method.java:511)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at dalvik.system.NativeStart.main(Native Method)
02-28 17:06:42.917: E/AndroidRuntime(18977): Caused by: java.lang.ClassCastException: android.widget.TimePicker cannot be cast to android.widget.Button
02-28 17:06:42.917: E/AndroidRuntime(18977):    at com.example.quiet.MainActivity.onCreate(MainActivity.java:22)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.Activity.performCreate(Activity.java:4470)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-28 17:06:42.917: E/AndroidRuntime(18977):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
02-28 17:06:42.917: E/AndroidRuntime(18977):    ... 11 more

【问题讨论】:

  • 我们真的需要你的 LogCat,但作为你发布的代码在黑暗中的狂野刺伤,我猜 btn1.setText(hour) 会在小时内找到一个 NullPointer,因为它的值也没有定义或者如果它被定义你需要有 btn1.setText(String.valueOf(hour)); 将 int 变成一个字符串
  • 我使用了相同的代码..,它的工作..,你得到什么错误??
  • 您是否在 Manifest 中声明了您的活动?
  • android.widget.Button cannot be cast to android.widget.TimePicker。 MainActivity.java 的第 22 行。所以我相信这不是你实际拥有的完整代码,这是错误的。
  • 我已经删除了刚刚离开 btn1 声明的所有内容......仍然无法正常工作

标签: java android xml class object


【解决方案1】:

我猜是因为btn1.setText(hour);
由于 hour 是一个 int,setText 将查找具有您传递的 ID 的资源。尝试将字符串传递给您的 setText。

【讨论】:

    【解决方案2】:

    您正在调用 setText(0) 这会导致异常而不是像 setText("12:00") 一样调用;

    【讨论】:

      【解决方案3】:

      试试:

      btn1.setText("" + hour);
      

      所以要解决int转字符串的问题

      【讨论】:

        【解决方案4】:

        这些线条看起来很可疑。 (免责声明 - 这可能是也可能不是主要问题)。

            android:layout_alignRight="@+id/timePicker1"
        
            ....
        
            android:layout_alignLeft="@+id/timePicker1"
        

        您正在为布局关系使用“@+id/”命名法。删除 + 号,这样您就不会尝试定义 ID。如:

           android:layout_alignRight="@id/timePicker1"
        
            ....
        
           android:layout_alignLeft="@id/timePicker1"
        

        但是,请在为其声明资源 ID 的小部件上保留 @+id/ 标记:

        <TimePicker
            android:id="@+id/timePicker1"
        

        我不确定资源 ID 是否是您的核心问题,Android 资源编译器可能会根据您的需要处理它。但它看起来很可疑,让我叫出来。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-21
          • 1970-01-01
          • 2012-05-07
          • 2018-07-03
          • 2014-02-19
          • 2011-06-12
          • 2016-05-04
          相关资源
          最近更新 更多