首页 > 解决方案 > 使用键在活动之间传递值

问题描述

我正在尝试创建一个应用程序来检查您输入的 2 个数字中的哪个数字较大,并在另一个活动中显示结果。

我也尝试使用 getIntExtra() ,但它没有用,也没有错误,它只是不起作用。

主要活动:

 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button check=findViewById(R.id.checkButton);
        check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent Check=new Intent(getApplicationContext(), BiggerNum.class);
                EditText N1EditText=findViewById(R.id.editTextN1);
                int num1=Integer.parseInt(N1EditText.getText().toString());
                EditText N2EditText=findViewById(R.id.editTextN2);
                int num2=Integer.parseInt(N2EditText.getText().toString());
                Check.putExtra("com.example.testapp.num1",num1);
                Check.putExtra("com.example.testapp.num2",num2);
                startActivity(Check);
            }
        });
    }
}

第二个活动:

public class BiggerNum extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        if (getIntent().hasExtra("com.example.testapp.num1")){
            int num1=getIntent().getExtras().getInt("num1");
            int num2=getIntent().getExtras().getInt("num2");
            TextView bigger=findViewById(R.id.biggerNView);
            bigger.setText((Math.max(num1,num2)));
        }
    }
}

编辑:我的代码中的问题是forpas解释的。无论如何,使用键的更好方法是将键创建为您将传递给的类中的静态决赛,然后使用它们:

public class BiggerNum extends AppCompatActivity {

public static final String FIRST_NUM_KEY = "num1";
public static final String SECOND_NUM_KEY= "num2";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        
        int num1= 0;
        int num2 = 0;

        if (getIntent().hasExtra(FIRST_NUM_KEY)){
            int num1 = getIntent().getExtras().getInt(FIRST_NUM_KEY);
        }
        if (getIntent().hasExtra(SECOND_NUM_KEY)){
            int num1 = getIntent().getExtras().getInt(SECOND_NUM_KEY);
        }
        TextView bigger=findViewById(R.id.biggerNView);
        bigger.setText((Math.max(num1,num2)));
    }
}

标签: javaandroid

解决方案


2 个附加项的键是"com.example.testapp.num1"and "com.example.testapp.num2",因此您必须使用它们来检索它们,而不是"num1"and "num2"

if (getIntent().hasExtra("com.example.testapp.num1") && getIntent().hasExtra("com.example.testapp.num2")){
    int num1=getIntent().getExtras().getInt("com.example.testapp.num1");
    int num2=getIntent().getExtras().getInt("com.example.testapp.num2");
    TextView bigger=findViewById(R.id.biggerNView);
    bigger.setText(String.valueOf(Math.max(num1,num2)));
}

推荐阅读