2013-08-14 12 views
6

Tôi muốn sử dụng getWindowManager() trong MainActivity của mình, nhưng tôi không muốn viết phương thức này trực tiếp vào nó.Làm cách nào để sử dụng getWindowManager() bởi một tệp java khác

Đây là mã MainActivity tôi

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    String d= new DisplayMessageActivity().getWeithAndHeight(d); 
} 

và đây là mã DisplayMessageActivity tôi

public class DisplayMessageActivity extends Activity { 

@SuppressLint("NewApi") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent = getIntent(); 
    .... 
    .... 
    setContentView(textView); 
} 
public String getWeithAndHeight(String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    *getWindowManager().getDefaultDisplay().getMetrics(dm);* 
    int width = dm.widthPixels; 
    int height = dm.heightPixels; 
    String w=new String(""+width); 
    String h=new String(""+height); 
    url=url+"&23=w%3A"+w+"%20h%3A"+h+"%20d%3A"; 
    return url; 
} 
} 

phá vỡ mã của tôi tại getWindowManager(), xin vui lòng cho tôi biết tại sao. Cảm ơn nhiều.

+0

Bạn nên đăng sản lượng Logcat . – Vikram

+1

Chính xác thì bạn muốn gì ??? Bạn có muốn hoạt động của mình với toàn màn hình không ?? –

Trả lời

3

Tại sao bạn không tạo ra phương pháp tĩnh:

public static String getWeithAndHeight(Activity activity, String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(dm); 
    int width = dm.widthPixels; 
    int height = dm.heightPixels; 
    String w=new String(""+width); 
    String h=new String(""+height); 
    url=url+"&23=w%3A"+w+"%20h%3A"+h+"%20d%3A"; 
    return url; 
} 

DisplayMessageActivity bạn không được tạo ra successuffly. Bạn không thể chỉ tạo đối tượng hoạt động mới để sử dụng tất cả các phương thức của nó.

16
public String getWeithAndHeight(Context context, String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); 
    //.... 
} 
+0

Bạn nên thực hiện Hoạt động với tư cách là đối số đầu tiên thay vì một Ngữ cảnh được đưa vào Hoạt động. – sapht

0

trả lời của câu hỏi đầu tiên của bạn "Tôi muốn sử dụng getWindowManager() trong MainActivity của tôi, nhưng tôi không muốn viết phương pháp này trực tiếp trong đó." Bạn có thể viết BaseActivity extends Activity & đây bạn có thể xác định mã cho

public String getWeithAndHeight(Context context, String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); 
    //.... 
} 

Và đối với DisplayMessageActivity & MainActivity bạn có thể mở rộng với BaseActivity.

0

Thực hiện theo hai bước sau:

Đầu tiên:

mở rộng lớp Hoạt động

**class Example extends Activity 
.....** 

Thứ hai:

Sử dụng mã dưới đây:

**DisplayMetrics displayMetrics = new DisplayMetrics(); 
WindowManager windowmanager = (WindowManager)                  getApplicationContext().getSystemService(Context.WINDOW_SERVICE); 
windowmanager.getDefaultDisplay().getMetrics(displayMetrics); 
int deviceWidth = displayMetrics.widthPixels; 
int deviceHeight = displayMetrics.heightPixels;**