Исключение нулевого указателя при использовании Пакета для передачи данных

У меня есть массив плавающий camObjCoord объявленный как..

public static float camObjCoord[] = new float[8000];

Я затем заполняюсь, это - индексы в классе, который делает что-то как следующее..

camObjCoord[1] = 2.5;

Я затем звоню makeview()

       public void makeview() {
    Intent myIntent = new Intent(this, GLCamTest.class);
    this.startActivity(myIntent);
    Bundle b = new Bundle();
    b.putFloatArray("tweets", camObjCoord);
}

и затем в новом классе это делает...

               public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle b = this.getIntent().getExtras();
    float original[] = b.getFloatArray("tweets");
    camObjCoord = original;
    counter++;
}   

Но... Я получаю Исключение нулевого указателя в float original[] = b.getFloatArray("tweets"); и я не знаю почему. Я попытался связаться прежде, чем назвать намерение и т.д., но у меня не было удачи в фиксации. Кто-либо знает почему?

Я также включал часть ошибки, упаковывают любого из Вас, интересно.

            07-14 11:14:35.592: ERROR/AndroidRuntime(7886): Caused by:  java.lang.NullPointerException
            07-14 11:14:35.592: ERROR/AndroidRuntime(7886):     at  org.digital.com.GLCamTest.onCreate(GLCamTest.java:41)
            07-14 11:14:35.592: ERROR/AndroidRuntime(7886):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
            07-14 11:14:35.592: ERROR/AndroidRuntime(7886):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
            07-14 11:14:35.592: ERROR/AndroidRuntime(7886):     ... 11 more

Спасибо!

5
задан Skizit 14 July 2010 в 10:40
поделиться

4 ответа

Итак, это предполагает, что this.getIntent (). GetExtras () вернул null . Обратите внимание, что в makeview вы ничего не сделали после создания пакета. Вам нужно сделать:

myIntent.putExtras(b);

, возможно, в конце? (Я не разработчик Android, поэтому я не знаю API, но это кажется вероятным ...)

РЕДАКТИРОВАТЬ: Как уже отмечали другие, вы потенциально должны поместить вызов startActivity после все настраивал по намерениям.

4
ответ дан 14 December 2019 в 04:29
поделиться

Если вы получите исключение NullPointerException в строке

float original[] = b.getFloatArray("tweets"); 

, то единственным вариантом будет то, что b будет равно нулю. Может ли this.getIntent (). GetExtras () в некоторых случаях возвращать значение null? вы должны это проверить.

0
ответ дан 14 December 2019 в 04:29
поделиться

В вашем методе makeview есть логическая ошибка, вам нужно добавить дополнительные функции к намерению до его запуска. Также настоятельно рекомендуется использовать для ключа константу ( GLCamTest.TWEETS ).

public void makeview() {
    Intent myIntent = new Intent(this, GLCamTest.class);
    myIntent.putExtra(GLCamTest.TWEETS, camObjCoord);//assuming camObjCoord is float[]
    this.startActivity(myIntent);
}

А с другой стороны

Bundle b = this.getIntent().getExtras();
float original[];
if (b!=null) {
    original = b.getFloatArray(GLCamTest.TWEETS);
}
if (original!=null) {
   //do something with original
}
3
ответ дан 14 December 2019 в 04:29
поделиться
   public void makeview() {
Intent myIntent = new Intent(this, GLCamTest.class);
this.startActivity(myIntent);
Bundle b = new Bundle();
b.putFloatArray("tweets", camObjCoord);

}

Я думаю, что ошибка в том, что вы запустили активность this.startActivity(myIntent); и после этого вы передаете значение bundle

 Bundle b = new Bundle();
    b.putFloatArray("tweets", camObjCoord);

. ---->> поэтому он ничего не передаст. поэтому на стороне получателя

Bundle b = this.getIntent().getExtras();
    float original[] = b.getFloatArray("tweets");

---->> этот вышеприведенный код получает значение "null".

Поэтому попробуйте сначала создать пакет, а затем начать свою деятельность.

Попробуйте это:

  public void makeview() {
    Intent myIntent = new Intent(this, GLCamTest.class);

    Bundle b = new Bundle();
    b.putFloatArray("tweets", camObjCoord);

this.startActivity(myIntent);

}
1
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: