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()でのコードの中断、理由を教えてください。どうもありがとうございました。
public String getWeithAndHeight(Context context, String url) {
DisplayMetrics dm = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm);
//....
}
静的メソッドを作成してみませんか:
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が正常に作成されていません。新しいアクティビティオブジェクトを作成して、そのすべてのメソッドを使用することはできません。
ここでのパーティーには遅すぎます。誰かがそれから利益を得ることができるかもしれないので、答えを投稿してください。 このようなコンテキストを使用して静的参照としてWindowManager()を取得できます。
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (windowManager != null) {
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
}
これで、表示マトリックスを使用して幅、高さなどを取得できます
最初の質問への回答「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で拡張できます。
次の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;