2014-01-12 67 views
0

我正在做一個應用程序,在這個應用程序,我需要顯示設備的寬度和高度。最初我在一個班級中計算了寬度和高度,然後立即顯示出來。但爲了讓它看起來更有條理,我將它們分開放在一個單獨的課堂上。這段代碼中的類:不能得到屏幕寬度和高度值在另一類

public class DisplayMeasurement extends Activity{ 

public int widthScreen = 0; 
public int heightScreen = 0; 

@SuppressWarnings("deprecation") 
public void DisplayHeightWidthMeasurement(){ 
     int Measuredwidth = 0; 
     int Measuredheight = 0; 
     Point size = new Point(); 
     WindowManager w = getWindowManager(); 

     if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2){ 
       w.getDefaultDisplay().getSize(size); 

       Measuredwidth = size.x; 
       Measuredheight = size.y; 
      }else{ 
       Display d = w.getDefaultDisplay(); 
       Measuredwidth = d.getWidth(); 
       Measuredheight = d.getHeight(); 
      } 
     //int sepertiga = Measuredwidth/3; 
     //akhir ngukur layar 
     set(Measuredwidth,Measuredheight); 
    } 

    public void set(int Measuredwidth, int Measureheight){ 
     this.widthScreen = Measuredwidth; 
     this.heightScreen = Measureheight; 
    } 

    public int getWidthScreen(){ 
    return widthScreen; 
    } 

    public int getHeightScreen(){ 
     return heightScreen; 
    } 
} 

那麼這是mainActivity一段代碼:

DisplayMeasurement screenValue = new DisplayMeasurement(); 
    int WidthScreen = screenValue.getWidthScreen(); 
    int HeightScreen = screenValue.getHeightScreen(); 


    TextView text1 = (TextView) findViewById(R.id.text1); 
    TextView text2 = (TextView) findViewById(R.id.text2); 

    text1.setText("lebar" + WidthScreen); 
    text2.setText("tinggi" + HeightScreen); 

但是,我得到的是0值有任何誰經歷了同樣的事情,或有誰知道這個問題。請幫忙。

回答

2

對不起,我有點新到Android,但我給它一個去。

我不知道爲什麼你試圖通過創建這似乎事情過分複雜化新的活動來組織代碼。

public class DisplayMeasurement { 

    public int widthScreen = 0; 
    public int heightScreen = 0; 

    public void DisplayMeasurement(Context context){ 
      Point size = new Point(); 
      WindowManager w = (WindowManager) mContext.getSystemService(mContext.WINDOW_SERVICE); 

      if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2){ 
       w.getDefaultDisplay().getSize(size); 
       widthScreen = size.x; 
       heightScreen = size.y; 
      } else { 
       Display d = w.getDefaultDisplay(); 
       widthScreen = d.getWidth(); 
       heightScreen = d.getHeight(); 
      } 
    } 

    public int getWidthScreen(){ 
     return widthScreen; 
    } 

    public int getHeightScreen(){ 
     return heightScreen; 
    } 
} 

然後在你的主要活動;

DisplayMeasurement screenValue = new DisplayMeasurement(this); 
int WidthScreen = screenValue.getWidthScreen(); 
int HeightScreen = screenValue.getHeightScreen(); 


TextView text1 = (TextView) findViewById(R.id.text1); 
TextView text2 = (TextView) findViewById(R.id.text2); 

text1.setText("lebar" + WidthScreen); 
text2.setText("tinggi" + HeightScreen); 

不知道它是否會工作,但沒有測試過它。

另外,我不知道爲什麼(已編碼僅6個月) - 但如何DisplayHeightWidthMeasurement()意味着要不斷呼籲,當你永遠不會調用它。你要做的就是:

DisplayMeasurement screenValue = new DisplayMeasurement(); 

等你的方法:DisplayHeightWidthMeasurement,它實際上具有邏輯得到的寬度和高度永遠不會被調用。你需要先調用它,否則它會返回0,這是你初始化的。

+0

這似乎或多或少是正確的。我可能會補充說,你永遠不應該手動實例化一個Activity類。始終允許Android實例化您的活動。正如@ user2693394正確地指出,你得到0值的原因是因爲你永遠不會調用你的DisplayHeightWidthMeasurement()函數來初始化你的值。 – TheIT

+0

謝謝大家。錯誤是一種恥辱。 「如果該方法從未被稱爲如何改變它的值」。最後我修復了@ Jerryl15提供的代碼。謝謝 –

0

你永遠不會調用函數DisplayHeightWidthMeasurement()所以它set()尚未調用的方法,所以高度值寬度爲零就像你設置,就像@TheIT說,這不是一個好辦法例化一個Activity,你可以定義一個Class,它可以獲得顯示的寬度高度而不是使用Activity