【问题标题】:Why my app keeps crashing为什么我的应用总是崩溃
【发布时间】:2014-01-15 04:23:21
【问题描述】:

这是LogCat,希望对您有所帮助:

> 01-15 04:10:50.154: E/AndroidRuntime(369): FATAL EXCEPTION: main
>         01-15 04:10:50.154: E/AndroidRuntime(369): java.lang.RuntimeException: Unable to start activity
> ComponentInfo{com.guzi.uyproductions/com.guzi.uyproductions.MainActivity}:
> java.lang.ClassCastException: android.widget.ImageButton
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.os.Handler.dispatchMessage(Handler.java:99)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.os.Looper.loop(Looper.java:130)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.app.ActivityThread.main(ActivityThread.java:3683)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at java.lang.reflect.Method.invokeNative(Native Method)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at java.lang.reflect.Method.invoke(Method.java:507)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at dalvik.system.NativeStart.main(Native Method)
>         01-15 04:10:50.154: E/AndroidRuntime(369): Caused by: java.lang.ClassCastException: android.widget.ImageButton
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at com.guzi.uyproductions.MainActivity.onCreate(MainActivity.java:21)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
>         01-15 04:10:50.154: E/AndroidRuntime(369):    ... 11 more
>         01-15 04:10:52.874: I/Process(369): Sending signal. PID: 369 SIG: 9

这是.java:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button)findViewById(R.id.imageButton2);

    button.setOnClickListener(new OnClickListener() {
      public void onClick(View arg0) {
        Intent viewIntent =
          new Intent("android.intent.action.VIEW",
            Uri.parse("https://www.google.com"));
          startActivity(viewIntent);
      }
    });

如果您需要更多详细信息,请告诉我

【问题讨论】:

  • 在日志中:ClassCastException: android.widget.ImageButton 表示 imageButton2ImageButton 而不是 Button 。所以使用ImageButton button = (ImageButton)findViewById(R.id.imageButton2);
  • 嗨,如果问题会得到解决,那么我们可以转到下一个问题的答案,其他人也可以从中获得帮助。

标签: java android eclipse crash imagebutton


【解决方案1】:

你好,删除这行Button button = (Button)findViewById(R.id.imageButton2);

并使用

ImageButton button = (ImageButton )findViewById(R.id.imageButton2);

您需要使用ImageButton,但您使用的是Button

【讨论】:

    【解决方案2】:

    正如 Jitesh 已经解释的那样,我只是想补充一点以消除一些混乱。

    从ImageButton的名字我们可以认为它是Button类的子类(就像textview是View类)。这就是为什么这个问题可能源于误解。正如我们所知,我们可以将一个子类转换为它的超类。

    但是 ImageButton 不是 Button 类的子类(既不是直接的也不是间接的)所以你不能像你一样进行强制转换。这里发生了 ClassCastException。

    【讨论】:

    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2020-07-28
    • 2011-10-10
    • 2011-08-08
    相关资源
    最近更新 更多