猿问

使用键在活动之间传递值

我正在尝试创建一个应用程序来检查您输入的 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;


    }

}


慕仙森
浏览 89回答 1
1回答

RISEBY

2 extras 的键是"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)));}
随时随地看视频慕课网APP

相关分类

Java
我要回答