【问题标题】:How to get value of RadioGroup from different activity [duplicate]如何从不同的活动中获取 RadioGroup 的价值 [重复]
【发布时间】:2019-03-27 22:30:56
【问题描述】:

我在 Android Studio 中制作了一个健身应用程序,我的项目有多个活动 (6)。我正在尝试从 SixthActivity 中的 ThirdActivity 获取 radiogroup 的值。但是,当我尝试这样做时,我得到了错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.RadioGroup.getCheckedRadioButtonId()' on a null object reference

我已确保 xml 代码中的所有变量名称都是正确的,但仍然遇到同样的问题。

SixthActivity.java

  Intent intent=getIntent();
  String experience =intent.getStringExtra("Experience");

我希望能够在处于 SixthActivity 时从 ThirdActivity 中的 thirdRadioGroup RadioGroup 获取值。

新代码:

//ThirdActivity.class

 thirdRadioGroup = findViewById(R.id.thirdRadioGroup);
 int radioIdExperience = thirdRadioGroup.getCheckedRadioButtonId();
 experience = (RadioButton) findViewById(radioIdExperience);
 Intent intent = new Intent(this, SixthActivity.class);
 intent.putExtra("Experience", experience.getText());
 startActivity(intent);

现在,再次抛出 NullPointerException..

error: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.RadioButton.getText()' on a null object reference

【问题讨论】:

标签: java radio-group


【解决方案1】:

您收到空指针异常,因为 ThirdActivity 已暂停。 ThirdActivity 已暂停,因为您有第六个正在运行。从 ThirdActivity 获取数据的一种方法是在它们之间导航时将它们作为额外的意图值传递。 示例 Java,您在 ThirdActivity 上执行此操作

Intent intent = new Intent(ThirdActivity .this, SixthActivity.class);
intent.putExtra("Experience",experience.getText());
startActivity(intent);

在您的第六个活动中,您会收到如下数据:

Intent intent=getIntent();
String experience =intent.getStringExtra("Experience");

【讨论】:

  • 我需要在 ThirdActivity 中将 radiogroup 值作为意图传递吗?
  • 是的,这是一种方法。
  • @Kars 您能否提供有关如何执行此操作的任何伪代码?任何事情都将不胜感激
  • 已编辑以提供伪代码示例。
  • @bensadiku 谢谢你的伪代码帮助很大。但是,intent.putExtra("Experience",experience.getText()); 行出现错误。错误状态:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.CharSequence android.widget.RadioButton.getText()”。在该行中,您在 ThirdActivity.java 中声明了 experience.getText(),但我在第六个活动中创建了体验按钮。我现在要在 thirdActivity 中创建体验按钮吗?我这样做并收到了上面的错误。
【解决方案2】:

在活动之间传递值的一种方法是在负责新活动的意图上使用 putExtra。

intent.putExtra("NAME", value)

然后您可以通过在新活动上调用 getExtra 来访问该值。

getIntent().getIntExtra("NAME")
getIntent().getStringExtra("NAME")

https://developer.android.com/reference/android/content/Intent

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 2021-03-07
    • 2012-10-25
    • 2022-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多