How to use getWindowManager () with another java file

I want to use getWindowManager () in my MainActivity, but I do not want to write this method directly in it.

Here is my MainActivity code

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

and here is my DisplayMessageActivity code

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

my code break in getWindowManager (), please tell me why. Thank you very much.

+9
source share
5 answers
 public String getWeithAndHeight(Context context, String url) { DisplayMetrics dm = new DisplayMetrics(); ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); //.... } 
+22
source

Why don't you create a static method:

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

Your DisplayMessageActivity is not created successfully. You cannot just create a new activity object to use all its methods.

+5
source

The answer to your first question is "I want to use getWindowManager () in my MainActivity, but I do not want to write this method directly in it." You can write BaseActivity extends Activity , and here you can define the code for

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

And for DisplayMessageActivity and MainActivity, you can spread using BaseActivity.

0
source

Complete two steps: First: expand your activity class

 class Example extends Activity 

Second: use these lines

 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
source

It's too late here to post an answer, because someone can benefit from it. you can get WindowManager () as a static link using such a context .

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

now you can use the display matrix to get width, height, etc.

0
source

Source: https://habr.com/ru/post/951691/


All Articles