Для начала я довольно новичок в программировании на Android, поэтому эта ошибка может быть очень простой, я не заметил. Но всякий раз, когда я открываю простое приложение, я начинаю с изображения. Когда я сажусь, это должно измениться на другое изображение, но вместо этого приложение выйдет из строя. Есть идеи, почему это так?Android setImageResource вызывает приложение для краха
вот мой код Java
package example.course.bananapeeler;
import android.gesture.Gesture;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;
import android.widget.ImageView;
import android.view.MotionEvent;
import android.view.GestureDetector;
import android.support.v4.view.GestureDetectorCompat;
public class MainActivity extends ActionBarActivity implements GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener{
private ImageView mainPic;
private GestureDetectorCompat gestureDetector;
private int moneyPerSecond;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.gestureDetector = new GestureDetectorCompat(this, this);
gestureDetector.setOnDoubleTapListener(this);
//ImageView mainPic = (ImageView)findViewById(R.id.mainPic);
ImageView mainPic = (ImageView)findViewById(R.id.mainPic);
}
@Override
public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onDoubleTap(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onDown(MotionEvent motionEvent) {
return true;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent2, float v, float v2) {
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
}
@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent2, float v, float v2) {
/*
ImageView img = new ImageView(this);
findViewById(R.id.mainPic);
*/
mainPic.setImageResource(R.drawable.peeledbanana);
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><![CDATA[
/"peeledbanana";
android:id="@+id/imageView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
]]>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mainPic"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/mainbanana"
android:contentDescription="@string/mainPic" />
</RelativeLayout>
Не знаю, почему формат файла синтаксиса странно. Это вызывает аварии?
LogCat Ошибки
05-13 17: 16: 47,329 2333-2333/example.course.bananapeeler E/InputEventReceiver: Исключение диспетчеризации события ввода. 05-13 17: 16: 47,329 2333-2333/example.course.bananapeeler Е/MessageQueue-JNI: Исключение в MessageQueue обратного вызова: handleReceiveCallback 05-13 17: 16: 47,339
2333-2333/example.course. bananapeeler Е/MessageQueue-JNI: java.lang.NullPointerException: Попытка вызвать виртуальный метод 'пустот android.widget.ImageView.setImageResource (INT)' на нулевой объект эталонной в example.course.bananapeeler.MainActivity.onFling (MainActivity.java:88) на android.view.GestureDetector.onTouchEvent (GestureDetector.java:620) на android.support.v4.view.GestureDetectorCompat $ GestureDetectorCompatImplJellybeanMr2.onTouchEvent (GestureDetectorCompat.java:475) в android.support.v4.view.GestureDetectorCompat.onTouchEvent (GestureDetectorCompat.java:538) в example.course.bananapeeler.MainActivity.onTouchEvent (MainActivity.java:102) на android.app.Activity.dispatchTouchEvent (активность. java: 2869) at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:59) at com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent (PhoneWindow.java:2529) в android.view.View.dispatchPointerEvent (View.java:9180) в android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:4734) в android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess (ViewRootImpl.java: 4572) на droid.view.ViewRootImpl $ InputStage.deliver (ViewRootImpl.java:4096) at android.view.ViewRootImpl $ InputStage.onDeliverToNext (ViewRootImpl.java:4149) at android.view.ViewRootImpl $ InputStage.forward (ViewRootImpl.java: 4115) в android.view.ViewRootImpl $ AsyncInputStage.forward (ViewRootImpl.java:4229) в android.view.ViewRootImpl $ InputStage.apply (ViewRootImpl.java:4123) в android.view.ViewRootImpl $ AsyncInputStage.apply (ViewRootImpl.java:4286) в android.view.ViewRootImpl $ InputStage.deliver (ViewRootImpl.java:4096) в android.view.ViewRootImpl $ InputStage.onDeliverToNext (ViewRootImpl.java:4149) в android.view.ViewRootImpl $ InputStage.forward (ViewRootImpl.java:4115) на android.view.View RootImpl $ InputStage.apply (ViewRootImpl.java:4123) в android.view.ViewRootImpl $ InputStage.deliver (ViewRootImpl.java:4096) в android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:6600) на андроиде. view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:6484) на android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:6455) в android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:6690) в android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:185) в android.os. MessageQueue.nativePollOnce (родной метод) на android.os.MessageQueue.next (MessageQueue.java:143) на android.os.Looper.loop (Looper.java:130) на android.app.ActivityThread.main (ActivityThread .java: 5972) at java.lang.reflect.Method.invoke (родной метод) по адресу java.lang.reflect.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1388) at com.android.inte rnal.os.ZygoteInit.main (ZygoteInit.java:1183) 05-13 17: 16: 47.339 2333-2333/example.course.bananapeeler D/AndroidRuntime: выключение VM 05-13 17: 16: 47.339
2333-2333/example.course.bananapeeler E/AndroidRuntime: FATAL ИСКЛЮЧЕНИЕ: main Процесс: example.course.bananapeeler, PID: 2333 java.lang.NullPointerException: попытка вызвать виртуальный метод void android.widget.ImageView. setImageResource (интермедиат)»на нулевой объект эталонным в example.course.bananapeeler.MainActivity.onFling (MainActivity.java:88) в android.view.GestureDetector.onTouchEvent (GestureDetector.java:620) в android.support .v4.view.GestureDetectorCompat $ GestureDetect orCompatImplJellybeanMr2.onTouchEvent (GestureDetectorCompat.java:475) на android.support.v4.view.GestureDetectorCompat.onTouchEvent (GestureDetectorCompat.java:538) на example.course.bananapeeler.MainActivity.onTouchEvent (MainActivity.java:102) на android.app.Activity.dispatchTouchEvent (Activity.java:2869) at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:59) at com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent (PhoneWindow.java:2529) на android.view.View.dispatchPointerEvent (View.java:9180) в android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:4734) в android.view. ViewRootImpl $ ViewPostImeInputStage.o nProcess (ViewRootImpl.java:4572) в android.view.ViewRootImpl $ InputStage.deliver (ViewRootImpl.java:4096) в android.view.ViewRootImpl $ InputStage.onDeliverToNext (ViewRootImpl.java:4149) в android.view. ViewRootImpl $ InputStage.forward (ViewRootImpl.java:4115) в android.view.ViewRootImpl $ AsyncInputStage.forward (ViewRootImpl.java:4229) в android.view.ViewRootImpl $ InputStage.apply (ViewRootImpl.java:4123) в android.view.ViewRootImpl $ AsyncInputStage.apply (ViewRootImpl.java:4286) at android.view.ViewRootImpl $ InputStage.deliver (ViewRootImpl.java:4096) at android.view.ViewRootImpl $ InputStage.onDeliverToNext (ViewRootImpl.java: 4149) на android.view.ViewRootImpl $ InputStage.forward (ViewRo otImpl.java:4115) на android.view.ViewRootImpl $ InputStage.apply (ViewRootImpl.java:4123) на android.view.ViewRootImpl $ InputStage.deliver (ViewRootImpl.java:4096) на android.view.ViewRootImpl. deliverInputEvent (ViewRootImpl.java:6600) на android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:6484) на android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:6455) в android.view.ViewRootImpl $ WindowInputEventReceiver. onInputEvent (ViewRootImpl.java:6690) на android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:185) на android.os.MessageQueue.nativePollOnce (нативный метод) на android.os.MessageQueue.next (MessageQueue.java: 143) на android.os.Looper.loop (Looper.java:130) на android.app.ActivityThread.main (ActivityThread.java:5972) на java.lang.reflect.Method.invoke (собственный метод) at java.lang.reflect.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1388) at com.android.internal.os .ZygoteInit.main (ZygoteInit.java:1183)
Что ошибка у вас есть? Пожалуйста, разместите свое сообщение logcat. – AndroidEx
Я добавил logcat, но я не уверен, как дать ему правильный формат. Извините, но я надеюсь, что это предоставит больше информации о моей ошибке. –