2016-11-25 5 views
0

Я тестировал свое приложение в эмуляторе Android Studio через свой телефон Samsung S7 (API 23 и 6.0.1), и он отлично работает. Когда я отсоединяю его от своего ноутбука и запускаю приложение, он падает.Android - Null Array. Работает в эмуляторе Android Studio, но не на реальном устройстве при отключении.

Мой logcat говорит, что я пытаюсь вызвать нулевой массив ... но это не null? Я не понимаю, почему, когда я запускаю приложение через Android Studio на свой телефон, все работает нормально, но когда я запускаю его в одиночку, он падает. Благодарен за любую помощь!

Вот мой LogCat

FATAL EXCEPTION: main 
Process: com.example.abc.def, PID: 28693 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.abc.def/com.example.abc.def.MainActivity}: java.lang.NullPointerException: Attempt to read from null array 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:158) 
at android.app.ActivityThread.main(ActivityThread.java:7224) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: java.lang.NullPointerException: Attempt to read from null array 
at com.example.abc.def.MainActivity.onCreate(MainActivity.java:49) 
at android.app.Activity.performCreate(Activity.java:6876) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)  
at android.app.ActivityThread.access$1100(ActivityThread.java:221)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:158)  
at android.app.ActivityThread.main(ActivityThread.java:7224)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  

И вот мой код. Проблема возникает в нижней части, когда я называю btn1.setText (itemArray [0]), так как массив «нулевой»

public class MainActivity extends AppCompatActivity { 

Button btn1, btn2; 
String btn1Name, btn2Name; 
String btnValue = "", itemValue = "", itemPosition = ""; 
String[] buttonArray = new String[]{"blank", "blank"}; 
String[] itemArray = new String[]{"blank", "blank"}; 
String[] positionArray = new String[]{"blank", "blank"}; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn1 = (Button) findViewById(R.id.button1); 
    btn2 = (Button) findViewById(R.id.button2); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     btnValue = extras.getString("btnValue"); 
     itemValue = extras.getString("itemValue"); 
     itemPosition = extras.getString("itemPosition"); 

     buttonArray = extras.getStringArray("buttonArray"); 
     itemArray = extras.getStringArray("array"); 
     positionArray = extras.getStringArray("positionArray"); 

     if (btnValue != null && btnValue.equals("btn1")){ 
      buttonArray[0] = btnValue; 
      itemArray[0] = itemValue; 
      positionArray[0] = itemPosition; 
     } else if (btnValue != null && btnValue.equals("btn2")) { 
      buttonArray[1] = btnValue; 
      itemArray[1] = itemValue; 
      positionArray[1] = itemPosition; 
     } 
    } 

    btn1.setText(itemArray[0]); 
    btn2.setText(itemArray[1]); 
} 
} 
+0

Что возвращается «extras.getString (« itemValue »)» & »itemArray = extras.getStringArray (" array ");"? –

+0

@AdeelShahzad это из другого вида деятельности. Я не думаю, что это имело бы какое-либо отношение к моему коду, хотя, поскольку «extras» должно быть пустым, когда я запускаю приложение. itemArray [0] и [1] уже присвоено «blank» при запуске этой активности. – Pam

+0

Можете ли вы отправить другой код класса, в котором вы передаете эти дополнительные функции? –

ответ

1

Я предполагаю, что здесь, но MainActivity первым мероприятием в рамках проекта?

Я думаю, вы написали код, чтобы обработать возврат к этому действию с данными других действий. Я просто попробовал и getIntent(). GetExtras() возвращает null, когда действие сначала создается на эмуляторе. Однако, когда я запустил его на своем устройстве, getIntent сгенерировал это исключение.

Обратите внимание, что onCreate вызывается один раз, поэтому, если вы хотите увидеть результаты другого действия, взгляните на How to manage `startActivityForResult` on Android?.

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

  • Нет связанных вопросов^_^