Не удалось передать значение из одного действия из другого (передано только нулевое значение)

Я попытался передать переменную из одного действия в другое. В основном действии мне удалось вернуть значения с помощью сообщения Toast.

MainActivity.java

search = (Button) findViewById(R.id.search);
        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View w) {
                subreg = spinner_subregion.getSelectedItem().toString();
                reg = spinner_region.getSelectedItem().toString();
                pettype = spinner_pet.getSelectedItem().toString();
                petnumber = spinner_num.getSelectedItem().toString();
                Intent intent = new Intent(MainActivity, Result.class);
                intent.putExtra("subregion", subreg);
                intent.putExtra("region", reg);
                intent.putExtra("petnum", petnumber);
                intent.putExtra("pet", pettype);
                startActivity(intent);

         
}
}

Однако, когда я передал значение в Result.java, он возвращает только значение null. Я пытался искать решения и все еще не работает для меня. Кто-нибудь знает, как я могу передать данные?

Результат.java

Bundle extras = getIntent().getExtras();
        if (extras!=null){
            subreg = extras.getString("subreg");
            reg = extras.getString("reg");
            pettype = extras.getString("pettype");
            petnumber = extras.getString("petnumber");
        }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
50
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Попробуй это MainActivity.java

Intent myIntent = new Intent(this, NewActivity.class);
 intent.putExtra("subregion", subreg);
 intent.putExtra("region", reg);
 intent.putExtra("petnum", petnumber);
 intent.putExtra("pet", pettype);
startActivity(myIntent)

Результат.java

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view);
    
        Intent intent = getIntent();
if (intent ==null){
........
.......
}else{
       

    
        String subregion= intent.getStringExtra("subregion");
        String region= intent.getStringExtra("region");
        String petnum= intent.getStringExtra("petnum");
        String pet= intent.getStringExtra("pet");
}
    }

Это работает, за исключением того, что я не изменил имя переменной.

Lea 12.12.2020 04:47

Это мой код после его изменения.

MainActivity.java

        search = (Button) findViewById(R.id.search);
        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View w) {
                subreg = spinner_subregion.getSelectedItem().toString();
                reg = spinner_region.getSelectedItem().toString();
                pettype = spinner_pet.getSelectedItem().toString();
                petnumber = spinner_num.getSelectedItem().toString();

                Intent intent = new Intent(Pet_sitting.this, Pet_sitting_result.class);
                intent.putExtra("subreg", subreg);
                intent.putExtra("reg", reg);
                intent.putExtra("pettype", pettype);
                intent.putExtra("petnumber", petnumber);
                startActivity(intent);

            }
        });

Результат.java

Intent intent = getIntent();
        if (intent == null){
            Toast.makeText(getApplicationContext(),"Null value passed",Toast.LENGTH_SHORT).show();
        }
        else{
            subreg= intent.getStringExtra("subreg");
            reg= intent.getStringExtra("reg");
            pettype = intent.getStringExtra("pettype");
            petnumber = intent.getStringExtra("petnumber");

            Toast.makeText(getApplicationContext(),subreg + " " + reg + " " + pettype + " " + petnumber,Toast.LENGTH_SHORT).show();
        }

Как я вижу, вы используете Spinner в своем коде. Итак, очевидно, что счетчик может дать вам только одно значение за раз после вращения колеса... вам нужно установить код внутри в нулевое значение Exception... например... если это значение null, не передавайте пустое значение внутри намерения может сработало... если да то ответь

MainActivity.java

if (subreg != null){
   reg = spinner_region.getSelectedItem().toString();
   intent.putExtra("reg", reg);
 }
 startActivity(intent);

Результат.java

Intent intent = getIntent();
 if (intent == null){
    Toast.makeText(getApplicationContext(),"Null value passed",Toast.LENGTH_SHORT).show();
 }else{
    reg= intent.getStringExtra("reg");
    Toast.makeText(getApplicationContext(),reg.toString,Toast.LENGTH_SHORT).show();
 }

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