java - 应用程序在模拟器上崩溃,但它可以在真实设备上运行

标签 java android nullpointerexception

所以我有一个应用程序,它当然有一个主布局。这个布局有 View ,然后我在 Activity 中找到它们 - “findViewById”。像往常一样,我首先设置内容 View ,然后查找 View 。奇怪的是,该应用程序在我的真实设备(Htc Desire 2.3.7)和三星 Galaxy S3 mini(4.1)上运行良好,但它在模拟器上立即崩溃 - 在 2.3.5 和 4.1 模拟器上测试。崩溃问题很有意思:

    10-28 19:39:58.718: E/AndroidRuntime(5183): FATAL EXCEPTION: main
10-28 19:39:58.718: E/AndroidRuntime(5183): java.lang.RuntimeException: Unable to start activity ComponentInfo{wowmemes.iterbit.com/activites.iterbit.com.MainActivity}: java.lang.NullPointerException
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.os.Looper.loop(Looper.java:137)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.ActivityThread.main(ActivityThread.java:5039)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at java.lang.reflect.Method.invokeNative(Native Method)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at java.lang.reflect.Method.invoke(Method.java:511)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at dalvik.system.NativeStart.main(Native Method)
10-28 19:39:58.718: E/AndroidRuntime(5183): Caused by: java.lang.NullPointerException
10-28 19:39:58.718: E/AndroidRuntime(5183):     at activites.iterbit.com.MainActivity.initializeViewsAndGetPreferences(MainActivity.java:200)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at activites.iterbit.com.MainActivity.onCreate(MainActivity.java:107)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.Activity.performCreate(Activity.java:5104)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
10-28 19:39:58.718: E/AndroidRuntime(5183):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
10-28 19:39:58.718: E/AndroidRuntime(5183):     ... 11 more

空指针异常?什么 ?我再次检查了是否可能忘记在某些 View 上使用“findViewById”方法,但我没有。它在真实设备上也能很好地工作。

谁遇到过类似的问题?

主要 Activity :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main_layout);


    PAPYRUS = Typeface.createFromAsset(getAssets(), "fonts/papyrus.ttf");

    if(!checkIfNetworkAvailable()) {

        new MyCustomDialog(this, R.style.MyDialogStyle, R.layout.network_check, getResources().getString(R.string.networkCheck_Text)).show();
    }

selectedCategoriesPreference =getSharedPreferences("MyPrefs",MODE_PRIVATE);

初始化ViewsAndGetPreferences();

 }


private void initializeViewsAndGetPreferences() {

    recentTV = (TextView) findViewById(R.id.recent_TV);
    recentTV.setTypeface(PAPYRUS);
    recentTV.setOnClickListener(this);

这是我的 mainLayout xml(只有 TextView )

<TextView
    android:id="@+id/recent_TV"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
   android:layout_marginLeft="200dp"
    android:text="Recent" />

最佳答案

我已经弄清楚出了什么问题..

在真实设备上进行测试时,上述手机的屏幕尺寸为中等 - 超大。我有两个布局。一种用于中型 - 超大型设备,一种用于小型设备。在模拟器上测试时,我只使用小型设备,因此使用了小型设备的布局。在真实设备上测试时,因为它们有大屏幕,其他布局被拉走了。

小布局有什么问题?好吧,我是个笨蛋。我在我的应用程序中添加了一些新功能,并且我正在处理主布局,而完全忘记了小布局。所以一些 View 不存在于小布局中。这就是抛出 NullPointerException 的原因..

关于java - 应用程序在模拟器上崩溃,但它可以在真实设备上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820962/

相关文章:

android - 无法从 Android Studio 上的 Android 模拟器连接到互联网

java - 局部隐变量字段和空指针异常

java - 调用方法时处理空指针异常

java - 在 javafx 中禁用它后如何保持 GUI 组件的样式?

java - Talend 中庞大数据集的处理速度缓慢

java - 如何在 java servlet 和 JSP 中从 10g 中检索数据

java - 什么是 NullPointerException,我该如何解决?

java - 由于 obj.hasNext() 导致无限循环

java - 在 Activity 之间传递数据

android - 如何从字符串而不是 R.id 中查找 View