私は、電話機またはタブレットを決定するスイッチクラスを持っており、インテントが作成されたときにnullポインタ例外が発生します。私はちょうど両方の活動が存在し、スイッチがタブレットの携帯電話でスイッチに誤っているという意図として正しく動作しているので、何が原因であるのだろうと思っています。ここでNullPointerExeption with and intent Android
は、それぞれの活動を立ち上げ初期活性のためのコードである:ここで
package jack.beastapps.TimerPlus;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
public class SplashScreen extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public boolean isTablet() {
try {
Context context = this;
// Compute screen size
DisplayMetrics dm = context.getResources().getDisplayMetrics();
float screenWidth = dm.widthPixels/dm.xdpi;
float screenHeight = dm.heightPixels/dm.ydpi;
double size = Math.sqrt(Math.pow(screenWidth, 2) +
Math.pow(screenHeight, 2));
// Tablet devices should have a screen size greater than 6 inches
return size >= 6;
} catch(Throwable t) {
return false;
}
}{
if (isTablet() == true) {
Intent tablet = new Intent(SplashScreen.this, TabletActivity.class);
startActivity(tablet);
}
else {
Intent phone = new Intent(SplashScreen.this, PhoneActivity.class);
startActivity(phone);
}
は近い起動時にかかる力のためのlogcatです:
09:34:08.454: E/AndroidRuntime(12322): FATAL EXCEPTION: main
04-07 09:34:08.454: E/AndroidRuntime(12322): java.lang.RuntimeException: Unable to instantiate activity
ComponentInfo{jack.beastapps.TimerPlus/jack.beastapps.TimerPlus.SplashScreen}: java.lang.NullPointerException
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.app.ActivityThread.access$600(ActivityThread.java:123)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.os.Handler.dispatchMessage(Handler.java:99)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.os.Looper.loop(Looper.java:137)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.app.ActivityThread.main(ActivityThread.java:4424)
04-07 09:34:08.454: E/AndroidRuntime(12322): at java.lang.reflect.Method.invokeNative(Native Method)
04-07 09:34:08.454: E/AndroidRuntime(12322): at java.lang.reflect.Method.invoke(Method.java:511)
04-07 09:34:08.454: E/AndroidRuntime(12322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
04-07 09:34:08.454: E/AndroidRuntime(12322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
04-07 09:34:08.454: E/AndroidRuntime(12322): at dalvik.system.NativeStart.main(Native Method)
04-07 09:34:08.454: E/AndroidRuntime(12322): Caused by: java.lang.NullPointerException
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.content.ComponentName.<init>(ComponentName.java:75)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.content.Intent.<init>(Intent.java:3122)
04-07 09:34:08.454: E/AndroidRuntime(12322): at jack.beastapps.TimerPlus.SplashScreen.<init>(SplashScreen.java:36)
04-07 09:34:08.454: E/AndroidRuntime(12322): at java.lang.Class.newInstanceImpl(Native Method)
04-07 09:34:08.454: E/AndroidRuntime(12322): at java.lang.Class.newInstance(Class.java:1319)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
04-07 09:34:08.454: E/AndroidRuntime(12322): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
04-07 09:34:08.454: E/AndroidRuntime(12322): ... 11 more
あなたのソースコードは、あなたのスタックトレースが一致しないエラーを取得した場合。例外はSplashscreenコンストラクタで発生します。しかし、あなたのソースにはコンストラクタは含まれていません。書式も変更してください。私はタブを取り除き、スペースでそれらを置き換えることによってそれを美しくしようとしました。しかし、それは合わないだろう。 –