web-dev-qa-db-ja.com

別のJavaファイルでgetWindowManager()を使用するにはどうすればよいですか?

MainActivityでgetWindowManager()を使用したいのですが、このメソッドを直接記述したくありません。

これが私のMainActivityコードです

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);
 }

これが私のDisplayMessageActivityコードです

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;
}  
}

getWindowManager()でのコードの中断、理由を教えてください。どうもありがとうございました。

10
劉孟儒
public String getWeithAndHeight(Context context, String url) {  
    DisplayMetrics dm = new DisplayMetrics();  
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm);
    //....
}   
24
Boris Mocialov

静的メソッドを作成してみませんか:

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が正常に作成されていません。新しいアクティビティオブジェクトを作成して、そのすべてのメソッドを使用することはできません。

5
Tishka17

ここでのパーティーには遅すぎます。誰かがそれから利益を得ることができるかもしれないので、答えを投稿してください。 このようなコンテキストを使用して静的参照としてWindowManager()を取得できます

  DisplayMetrics displayMetrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        if (windowManager != null) {
            windowManager.getDefaultDisplay().getMetrics(displayMetrics);
        }

これで、表示マトリックスを使用して幅、高さなどを取得できます

0
war_Hero

最初の質問への回答「MainActivityでgetWindowManager()を使用したいが、このメソッドを直接記述したくない」あなたは書ける BaseActivity extends Activity&ここでは、コードを定義できます

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

また、DisplayMessageActivityとMainActivityの場合は、BaseActivityで拡張できます。

0
chaitanya

次の2つの手順に従います。最初:アクティビティクラスを拡張する

class Example extends Activity

2番目:これらの行を使用

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