所以我有一个应用程序,当然有一个主要的布局。这个布局有视图,然后我在活动中找到它们 - “findViewById”。像往常一样我首先setContentView然后我找到视图。奇怪的是,应用程序在我的真实设备(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
的NullPointerException?什么 ?我再次检查过,如果我忘了在某些视图上使用“findViewById”方法,但我没有。它在真实设备上也很棒。
任何人都遇到过类似的问题吗?
主要活动:
@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);
initializeViewsAndGetPreferences();
}
private void initializeViewsAndGetPreferences() {
recentTV = (TextView) findViewById(R.id.recent_TV);
recentTV.setTypeface(PAPYRUS);
recentTV.setOnClickListener(this);
}
这是我的mainLayout xml(仅文本视图)
<TextView
android:id="@+id/recent_TV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="200dp"
android:text="Recent" />
答案 0 :(得分:2)
我弄清楚出了什么问题..
在真实设备上进行测试时,上面提到的手机屏幕尺寸为中等大小。我有两个布局。一个用于中型 - 大型设备,一个用于小型设备。在仿真器上进行测试时,我只使用小型设备,因此使用了小型设备的布局。当在真实设备上进行测试时,由于它们有大屏幕,所以其他布局被拉了。
小布局出了什么问题?好吧,我是个笨蛋。我在我的应用程序中添加了一些新功能,我正在进行主要布局,完全忘记了小布局。因此,一些视图不存在于小布局中。这就是抛出NullPointerException的原因..