2014-01-12 144 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