2013-11-06 5 views
1

У меня есть приложение, которое, конечно же, имеет макет. В этом макете есть представления, которые затем я нахожу их в действии - «findViewById». Как обычно, я сначала setContentView, а затем я нахожу представления. Странно, что приложение отлично работает на моем реальном устройстве (Htc Desire 2.3.7) и на Samsung 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

Что есть в строке № 107 и 200 в MainActivity.java –

+0

Это текстовый. Этот конкретный код: recentTV.setOnClickListener (this); – rootpanthera

+0

Отправьте код для mainactivity sir, и, пожалуйста, смелейте вышеуказанные номера строк –

ответ

2

Я понял, что был неправ ..

При тестировании на реальном устройстве, экран размер на вышеупомянутых телефонах выше был средним - большим. У меня было два макета. Один для средних - больших устройств и один для небольших устройств. При тестировании на эмуляторе я использовал только небольшие устройства, поэтому использовался макет для небольших устройств. При тестировании на реальных устройствах из-за того, что у них большие экраны, другой макет был вытащен.

И что не так с малым расположением? Ну, я тупица. Я добавил некоторые новые функции в свое приложение, и я работал над основным макетом и полностью забыл о малой компоновке. Таким образом, некоторые представления не были представлены в малом макете. Вот почему было выбрано исключение NullPointerException.

Смежные вопросы