2015-02-03 6 views
0

У меня проблемы.Bundle extra возвращается NULL

В классе «А» У меня есть код:

Intent cInt = new Intent(Add_Product_Page.this, CategoryListActivity.class); 
Bundle extra = new Bundle(); 
extra.putBoolean("for_result", true); 
startActivityForResult(cInt, GET_CATEGORY, extra); 

Этот код из другого класса, который начинает свою деятельность

Bundle extra = getIntent().getExtras(); 

     if (extra != null) { 

      isforResult = cInt.getBooleanExtra("for_result", true); 
      setIsforResult(isforResult); 

     } else { 
      setIsforResult(false); 
     } 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setTitle("Category"); 

    } 

Я отлажена класса А и я получил значение от дополнительно как истинный, но когда я отлаживаю другой класс Я получаю NULL in Дополнительная информация

Может кто-нибудь мне помочь.

Заранее спасибо

+0

2 переменные имеют одинаковое имя 'Bundle extra = getIntent(). getExtras(); 'и 'Intent extra = getIntent();' –

+0

cInt.getBooleanExtra - это опечатка, которая должна быть extra.getBooleanExtra. и почему есть две дополнительные переменные? – Muthu

+0

Извините, я редактировал свой код. моя ошибка, но все еще значение extra равно null – Priyanka

ответ

0

Третий аргумент(Bundle option) не является «лишним» набором.
См. Context#startActivity(Intent, Bundle) для получения дополнительной информации. Это конфигурация запуска.

использование Intent#putExtra(String, boolean) для булевых дополнений.

Intent intent = new Intent(Add_Product_Page.this, CategoryListActivity.class); 
intent.putExtra("for_result", true); 
startActivityForResult(intent, GET_CATEGORY); 

затем

boolean b = getIntent().getBooleanExtra("for_result", false); 

Это equivalant к

boolean b = getIntent().getExtras().getBoolean("for_result"); 

Также вы можете проверить intent имеет дополнительный параметр или нет:

intent.hasExtra("for_result"); 
+0

intent.putBoolean не существует, aim.putExtra будет правильным. – David

+0

woops! Спасибо :) – ytRino

0

попробовать, как этот

isforResult = extra.getBoolean("for_result", true); 

и удалить эту строку Intent extra = getIntent(); это дубликат экземпляра.

0

Попробуйте

 Bundle extra = getIntent().getExtras(); 

     if (extra != null) { 

      isforResult = extra.getBoolean("for_result", true); 
      setIsforResult(isforResult); 

     } else { 
      setIsforResult(false); 
     } 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setTitle("Category"); 

    } 
0

Использование в Activity A

Intent in = new Intent(this, RegistrationActivity.class); in.putExtra("yourKey", yourValue); startActivityForResult(in, REQUEST_CODE);

и активность B

Bundle b = getIntent().getExtras(); 
    if (b != null) { 
     boolean value = getIntent().getBooleanExtra("yourKey", true); 

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