簡體   English   中英

從另一個類訪問時,Getter函數不返回值

[英]Getter function not returning value when accessed from another class

我有一個課程如下:

public class Element extends Activity
{
public float mX;
    public float mY;
 public void animate(long elapsedTime) 
    {
        mX += mSpeedX * (elapsedTime / 20f);
        mY += mSpeedY * (elapsedTime / 20f);
        setmX(mX);
        setmY(mY);
        checkBorders();
    }
public void setmX(float mX) 
{
Log.i("this.mX","mY at setmX read is :"+this.mX );      **//Line 1**
        this.mX = mX;
    }
public float getmX() {
        Log.i("mX","mX in getmX read is :"+mX );    **//Line 2**
        return mX;
    }

    public void setmY(float mY) {

        this.mY = mY;
        Log.i("this.mY","mY at setmY read is :"+this.mY );  **//Line 3**
    }

    public float getmY() {
        Log.i("mY","mY in getY read is :"+mY );    **//Line 4**

        return mY;
    }
}

我有另一堂課

public class Panel extends SurfaceView implements SurfaceHolder.Callback
{
int x = 100;
    int y = 0;
public float xval;
    public float yval; 
@Override
    public boolean onTouchEvent(MotionEvent event) 
    {
        Element element = new Element();
        float x = event.getX();
        float y = event.getY();
        Log.i("x","x in panel is :"+x);
        //toast tos = new toast();

        xval = element.getmX();
        Log.i("xval","xval in playactivity obtained is :"+xval );   **//Line 5**
        yval = element.getmY();
        Log.i("yval","yval in playactivity obtained is :"+xval );    **//Line 6**
return super.onTouchEvent(event);
}

第2,4,5和6行顯示為零。 我不想這樣做。 下面是logcat圖像。 在此輸入圖像描述

我是否在訪問說明符中出錯?

在不了解mSpeedXmSpeedY情況下,我們很難分辨出發生了什么。 在進行數學運算之前,嘗試將elapsedTimemSpeedX/Y變量轉換為浮點數。 浮點數學在Java中非常挑剔。 還要確保實際調用animate方法。

最后一點,我可能不應該提起這件事,但這會讓我失望。 您應該真正地,真正地處理您的代碼一致性和風格。 您的命名約定,換行/同線括號約定和縮進習慣都到處都是。 如果編程風格不一致,代碼可讀性和可維護性會大幅下降。

還有一件事:在為變量賦值之后,不需要調用setter方法。 您已經設置了set / get方法訪問的同一個變量的值。 祝好運!

  • 您不應該在另一個類中創建Activity類的對象(在您的類Element類中)。 請仔細閱讀應用程序基礎知識
  • 雖然您在Panel類中創建了Element類的對象,但您從未調用setter方法setmX()和setmY()來設置值。 您直接調用getter方法,它返回默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM