Android If else mit Displaygröße

LucasZL

Mitglied
Hi,
ich hatte nach einer Möglichkeit gesucht die Displaygröße also nicht die Aufösung zu ermitteln und dann, nach einer Login-Activity zu zwei verschiedenen Activitys weiterzuleiten, eine fürs Handy mit einer Tab Navigation, und eine fürs Tablet mit einem Masterflow Layout. Habe aber nur was für Displayaulösung gefunden nur leider klappt auch dies nicht bei mir:

Login Activity:
Java:
public class login extends Activity {
	
	Display display = getWindowManager().getDefaultDisplay();
	int screenHeight = display.getHeight();
	int screenWidth = display.getWidth();
	    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        
    }
    
    public void login (View view) {
    	Intent high = new Intent(this, MainActivity.class);
    	Intent low = new Intent(this, login.class);
    	 if(screenHeight * screenWidth<921600) 
    	 		startActivity(high);
    	 		else 
    	 			startActivity(low);
      }
   
    
}


An den aufzurufenden Classes liegt es nicht, die funktionieren ansich einwandfrei.


Die Meldung:
11-02 12:27:18.645: E/AndroidRuntime(2070): Caused by: java.lang.NullPointerException


Der Rest:
11-02 12:27:18.645: E/AndroidRuntime(2070): FATAL EXCEPTION: main
11-02 12:27:18.645: E/AndroidRuntime(2070): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.artifact.actionbarfragments/com.goh.ping.login}: java.lang.NullPointerException
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.os.Handler.dispatchMessage(Handler.java:99)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.os.Looper.loop(Looper.java:137)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.app.ActivityThread.main(ActivityThread.java:5039)
11-02 12:27:18.645: E/AndroidRuntime(2070): at java.lang.reflect.Method.invokeNative(Native Method)
11-02 12:27:18.645: E/AndroidRuntime(2070): at java.lang.reflect.Method.invoke(Method.java:511)
11-02 12:27:18.645: E/AndroidRuntime(2070): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-02 12:27:18.645: E/AndroidRuntime(2070): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-02 12:27:18.645: E/AndroidRuntime(2070): at dalvik.system.NativeStart.main(Native Method)
11-02 12:27:18.645: E/AndroidRuntime(2070): Caused by: java.lang.NullPointerException
11-02 12:27:18.645: E/AndroidRuntime(2070): at com.goh.ping.login.<init>(login.java:15)
11-02 12:27:18.645: E/AndroidRuntime(2070): at java.lang.Class.newInstanceImpl(Native Method)
11-02 12:27:18.645: E/AndroidRuntime(2070): at java.lang.Class.newInstance(Class.java:1319)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
11-02 12:27:18.645: E/AndroidRuntime(2070): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
 

tvr

Mitglied
So kannst du die Bildschirmgröße in Zoll ermittel:
Vielleicht gibt es auch eine einfachere Variante
Java:
DisplayMetrics metrics = getResources().getDisplayMetrics();
double ySize=metrics.heightPixels/metrics.ydpi;
double xSize=metrics.widthPixels/metrics.xdpi;
double screenSize=Math.sqrt(xSize*xSize+ySize*ySize);
Außerdem musst du die DisplayMetrics in onCreate oder später initielisieren:
 
Zuletzt bearbeitet:

LucasZL

Mitglied
So kannst du die Bildschirmgröße in Zoll ermittel:
Vielleicht gibt es auch eine einfachere Variante
Java:
DisplayMetrics metrics = getResources().getDisplayMetrics();
double ySize=metrics.heightPixels/metrics.ydpi;
double xSize=metrics.widthPixels/metrics.xdpi;
double screenSize=Math.sqrt(xSize*xSize+ySize*ySize);
Außerdem musst du die DisplayMetrics in onCreate oder später initielisieren:

Danke klappt perfekt :toll:
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben