Java 使用Intent从一个类向另一个类传递double时的NullPointerException

Java 使用Intent从一个类向另一个类传递double时的NullPointerException,java,android,android-intent,nullpointerexception,double,Java,Android,Android Intent,Nullpointerexception,Double,我试图将一个双值从一个类(MaterialCollect)传递到另一个类(Main Activity)。当我试图定义rho_m时,我在我的主活动类中收到一个NullPointerException错误。我没有成功。我已经附上了我的主要活动,MaterialCollect和MatrixBase类文件。根据logcat的说法,问题似乎与未能成功创建新捆绑包有关。我是Java新手,谢谢 public class MainActivity extends Activity{ double rho_m;

我试图将一个双值从一个类(MaterialCollect)传递到另一个类(Main Activity)。当我试图定义rho_m时,我在我的主活动类中收到一个NullPointerException错误。我没有成功。我已经附上了我的主要活动,MaterialCollect和MatrixBase类文件。根据logcat的说法,问题似乎与未能成功创建新捆绑包有关。我是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);
}}
和基质

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;
}}

从你发布的内容来看,我猜你需要在你的主要活动中获得一个价值

您的Main活动代码不正确(您正在创建一个新的捆绑包,另外您正在回调MaterialCollect活动)

您只需使用
getIntent().getExtras()


作为半尘点有一个循环。。。您启动一个主活动,该主活动启动一个MaterialCollect,该MaterialCollect启动另一个主活动


检查是否需要从其他活动获取值。

最好使用Serialize类,因为您可以将整个模型传递给活动。请检查以下更新代码

public class MatrixBase implements Serializable {

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;
}}
物料集合中的更改代码

 Intent it = new Intent(MaterialCollect.this, MainActivity.class);
 it.putExtra("it",nylon66)
 startActivity(it);
并在MainActivity oncreate方法中使用以下代码获取整个项目

MatrixBase matrixBase= (MatrixBase)getIntent().getSerializableExtra("it");

然后您可以访问单个模型中的所有数据

为什么。。您的主要活动再次启动另一个活动,它是否会继续循环?嗨,Laurent,谢谢你-我已经尝试过了,但它仍然返回nullpointerexception,您认为我的清单可能有问题导致它无法工作吗?@mullone抱歉编辑了代码。当然,rho_m仍然可以为null,例如,如果您没有从另一个活动获取值,当我尝试此方法(使用调整后的代码)时,它将返回null值,但正如您从我的代码中看到的,我希望它返回值1140。你知道我需要调整什么才能达到1140非空吗?非常感谢。嗨,纳文,谢谢你。我在一个全新的项目中尝试了您的方法,但当我尝试使用:rho_m=matrixBase.matrixaxialtmodules定义一个double时,它仍然返回nullpointerexception;你知道这是什么原因吗?
MatrixBase matrixBase= (MatrixBase)getIntent().getSerializableExtra("it");