java - 使用 Intent 将双精度从一个类传递到另一个类时出现 NullPointerException
问题描述
我正在尝试将一个类(MaterialCollect)中的双精度值传递给另一个类(主活动)。当我尝试定义 rho_m 时,我在主 Activity 类中收到 NullPointerException 错误。我一直在通过双打,但没有成功。我附上了我的 MainActivity、MaterialCollect 和 MatrixBase 类文件。根据 logcat,问题似乎在于没有成功创建新的 Bundle。我是Java新手,谢谢。
public class MainActivity extends Activity{
double rho_m;
double E_maxial;
double E_mtrans;
double UTS_m;
double v_m;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Intent intent;
intent = new Intent(MainActivity.this, MaterialCollect.class);
startActivity(intent);
Intent it = new Intent();
Bundle nylon66params = it.getExtras();
rho_m = nylon66params.getDouble("nylon66.matrixrho");
Log.d("print out","THE VALUE OF " + Double.toString(rho_m));
}}
材料收集类:
public class MaterialCollect extends AppCompatActivity {
MatrixBase nylon66 = new MatrixBase(1140, 2.7e9, 2.7e9, 2800e6, 0.33);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent it = new Intent(MaterialCollect.this, MainActivity.class);
Bundle nylon66values = new Bundle();
nylon66values.putDouble("nylon66.matrixrho", nylon66.matrixrho);
nylon66values.putDouble("nylon66.matrixaxialTmodulus", nylon66.matrixaxialTmodulus);
nylon66values.putDouble("nylon66.matrixtransTmodulus", nylon66.matrixtransTmodulus);
nylon66values.putDouble("nylon66.matrixpoissons",nylon66.matrixpoissons);
nylon66values.putDouble("nylon66.UTS",nylon66.matrixpoissons);
it.putExtras(nylon66values);
Log.d("ADebugTag", "Value: " + Double.toString(nylon66.matrixrho));
startActivity(it);
}}
和 MatrixBase
public class MatrixBase {
double matrixrho;
double matrixaxialTmodulus;
double matrixtransTmodulus;
double matrixpoissons;
double matrixUTS;
MatrixBase(double matrixrho, double matrixaxialTmodulus, double matrixtransTmodulus, double matrixpoissons, double matrixUTS) {
this.matrixrho = matrixrho;
this.matrixaxialTmodulus = matrixaxialTmodulus;
this.matrixtransTmodulus = matrixtransTmodulus;
this.matrixpoissons = matrixpoissons;
this.matrixUTS = matrixUTS;
}}
解决方案
根据您发布的内容,我猜您需要在 MainActivity 中取回一个值。
您的 MainActivity 代码不正确(您正在创建一个新的 Bundle,并且您正在回调您的 MaterialCollect Activity)。
您只需要使用从被调用者那里获取额外内容getIntent().getExtras()
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Bundle b = getIntent().getExtras();
rho_m = b.getDouble("nylon66.matrixrho");
if (rho_m != null)
{
Log.d("print out","THE VALUE OF " + Double.toString(rho_m));
}
}
推荐阅读
- tensorflow - 如何在 keras-tuner 中为超参数训练选择优化器和学习率
- python - 如何使用带有多个子图的 matplotlib 吸引人地排列标题和轴标签等图形和文本?
- java - 值按单个字符显示
- c# - 如何让我的敌人名单射击c#
- c++ - 苹果事业部 CSES Qustion 解决方案
- python - Leetcode 不同结果编译(#231 2 的幂)
- google-apps-script - 从电子表格中获取后将粗体文本粘贴到文档中
- javascript - 在 MutationObserver 中获取父级的问题
- angular - 我是否需要取消订阅已使用 Observable.from() 转换为 Observable 的 Promise?
- ruby-on-rails - 为什么rails作业(ApplicationJob)使用splat运算符?