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");

    }

Я отлаживал класс A и получал значение extra как true, но когда я отлаживал другой класс, я получал NULL в дополнительном

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

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

4 ответа

Решение

startActivityForResult()3-й аргумент (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);

Это эквивалентно

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

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

intent.hasExtra("for_result");

Попробуй вот так

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

и удали это Intent extra = getIntent(); линия это дубликат

Попробуй это

      Bundle extra = getIntent().getExtras();

        if (extra != null) {

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

        } else {
            setIsforResult(false);
        }

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

    }

Использовать в упражнении А

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);

    }
Другие вопросы по тегам