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

#java #android #android-studio

#java #Android #android-studio

Вопрос:

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

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. Я пытался искать решения и все еще не работает для меня. Кто-нибудь знает, как я могу передать данные?

Result.java

 Bundle extras = getIntent().getExtras();
        if (extras!=null){
            subreg = extras.getString("subreg");
            reg = extras.getString("reg");
            pettype = extras.getString("pettype");
            petnumber = extras.getString("petnumber");
        }
 

Ответ №1:

Попробуйте это 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)
 

Result.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");
}
    }
 

Комментарии:

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

Ответ №2:

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

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

            }
        });
 

Result.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();
        }
 

Ответ №3:

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

MainActivity.java

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

Rsult.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();
 }