Почему мое приложение не работает
Вот 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);
}
});
Если вам нужно больше деталей, дайте мне знать
2 ответа
Привет удали эту строку Button button = (Button)findViewById(R.id.imageButton2);
и использовать
ImageButton button = (ImageButton )findViewById(R.id.imageButton2);
вам нужно использовать ImageButton
но вы используете Button
Как Jitesh уже объяснил, я просто хочу добавить немного замечания, чтобы устранить некоторые недоразумения.
Из названия ImageButton мы можем подумать, что это подкласс класса Button (как textview для класса View). Вот почему эта проблема может возникнуть из-за неправильного представления. Как мы знаем, мы можем привести подкласс к суперклассу.
Но ImageButton не является подклассом (ни прямым, ни косвенным) класса Button, поэтому вы не можете выполнять приведение типа, как вы. Здесь ClassCastException происходит.