Android中putExtra传整数但getIntent取值失败问题求助
嘿,我来帮你搞定这个整数传递的问题!文本能传成功说明Intent的基本逻辑是通的,大概率是整数传递/接收的细节没做对,咱们一步步来:
第一步:修正第一个Activity的发送代码
把你按钮点击事件里的Intent代码调整成这样,确保整数用正确的方式传递:
// 按钮点击事件内的代码 Button sendBtn = findViewById(R.id.your_button_id); sendBtn.setOnClickListener(v -> { // 替换成你实际要传递的文本和整数 String textToSend = "测试传递的文本"; int intToSend = 999; Intent intent = new Intent(FirstActivity.this, SecondActivity.class); // 传递文本,自定义key(比如"KEY_TEXT"),后续接收要对应 intent.putExtra("KEY_TEXT", textToSend); // 传递整数,用专门的int类型putExtra重载,key比如"KEY_INT" intent.putExtra("KEY_INT", intToSend); startActivity(intent); });
第二步:确保第二个Activity的接收代码正确
这一步是最容易踩坑的地方,一定要注意类型匹配和key一致:
// SecondActivity的onCreate方法内 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); TextView textView1 = findViewById(R.id.textView1); TextView textView2 = findViewById(R.id.textView2); Intent receivedIntent = getIntent(); if (receivedIntent != null) { // 获取文本,key要和发送端完全一致 String showText = receivedIntent.getStringExtra("KEY_TEXT"); // 获取整数:用getIntExtra,第二个参数是默认值(防止没传值时崩溃) int showInt = receivedIntent.getIntExtra("KEY_INT", 0); // 显示到TextView textView1.setText(showText); // 重点!整数必须转成字符串再设置,否则会被当成资源ID textView2.setText(String.valueOf(showInt)); } }
你可能踩中的几个常见坑
- key不匹配:发送端的
"KEY_INT"和接收端的拼写、大小写必须完全一致,差一个字符都拿不到值 - 接收方法错了:如果用
getStringExtra去取整数,会返回null,导致TextView显示空或者崩溃,一定要用getIntExtra - 整数直接setText:TextView的
setText(int)会把数字当成字符串资源ID去查找,必须转成字符串再设置(比如String.valueOf(showInt)) - 没加默认值:如果发送端意外没传整数,
getIntExtra不加默认值会抛出异常,加上默认值更安全
对照自己的代码排查一下,大概率是上面某一个细节没处理好~
内容的提问来源于stack exchange,提问作者mayyar santeha
相关产品推荐
相关产品推荐

