2016-11-24 109 views
-2

我遇到了我正在使用的ImageView返回null的問題。這個問題似乎與findViewById,並導致一個問題,當我尊敬getX()的imageView。我已經嘗試了一切,但仍然無法實現。任何幫助將不勝感激!findViewById nullPointerException

XML:

ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:src="@drawable/character" 
    android:id="@+id/character" 
    android:scaleType="fitCenter" 
    android:clickable="false" 
    android:longClickable="false"/

爪哇: 包fozard.backuptestapp;

public class Play extends AppCompatActivity { 

private GameThread thread; 
private float charX=0; 
ImageView character; 

public void setCharacter(ImageView character) { 
    this.character = character; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_play); 





} 

@Override 
protected void onStart(){ 
    super.onStart(); 
    thread=new GameThread(); 
    thread.setRunning(true); 
    thread.start(); 
} 

public boolean onTouchEvent(MotionEvent event){ 
    switch (event.getAction()){ 
     case MotionEvent.ACTION_DOWN: 
      thread.setMovementSpeed(5); 
      thread.setMoving(true); 
      break; 
     case MotionEvent.ACTION_UP: 
      thread.setMoving(false); 
    } 
    return true; 
} 



public void updateCharPos(float movementSpeed){ 
    Log.d("Updating", "Should be able to update"); 
    character = (ImageView)findViewById(R.id.character); 
    charX = character.getX(); 
    System.out.print(charX); 
} 

}

堆棧跟蹤:

11-24 09:32:32.918 16706-16706/fozard.backuptestapp D/Updating: Should be able to update 
11-24 09:32:32.923 16706-16706/fozard.backuptestapp D/AndroidRuntime: Shutting down VM 
11-24 09:32:32.923 16706-16706/fozard.backuptestapp W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41cbc700) 
11-24 09:32:32.933 16706-16706/fozard.backuptestapp E/AndroidRuntime: FATAL EXCEPTION: main 
                     java.lang.NullPointerException 
                     at fozard.backuptestapp.Play.updateCharPos(Play.java:71) 
                     at fozard.backuptestapp.GameThread$1.run(GameThread.java:88) 
                     at android.os.Handler.handleCallback(Handler.java:730) 
                     at android.os.Handler.dispatchMessage(Handler.java:92) 
                     at android.os.Looper.loop(Looper.java:176) 
                     at android.app.ActivityThread.main(ActivityThread.java:5419) 
                     at java.lang.reflect.Method.invokeNative(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:525) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                     at dalvik.system.NativeStart.main(Native Method) 
+0

確保你的'ImageView' id'character'位於'activity_play'佈局的內部,否則它會拋出NullPointerExceptoin –

回答

0
ImageButton pauseButton = (ImageButton) findViewById(R.id.pausebutton); 

改變這種

ImageView pauseButton = (ImageView) findViewById(R.id.character); 

你正在使用錯誤的ID和錯誤的部件。 首先閱讀教程。

0

從我可以在你的XML看,你用你的ImageView錯誤的ID,應該是:

ImageView pauseButton = (ImageView) findViewById(R.id.character); 

,你也必須使用同一類對XML和Javacode(ImageView的)