将变量传递给具有意图的两个活动



我想将一些双精度值从我的主活动(我通过 EditText-field(传递给另外两个类。每次我尝试运行该应用程序时,我都会收到一条错误消息(类型/预期的非法启动(。有人可以向我解释这些吗?有人可以告诉我如何将它们从Main_Activity传递到Main2Activity和achtmalacht - Activity吗?

这是我的代码:

主要活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button weiter = (Button) findViewById(R.id.weiter);
weiter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText EingabeBreite = (EditText) findViewById(R.id.breite);
EditText EingabeHohe = (EditText) findViewById(R.id.höhe);
EditText EingabeLange = (EditText) findViewById(R.id.länge);

double breite = Double.parseDouble(EingabeBreite.getText().toString());
double hohe = Double.parseDouble(EingabeHohe.getText().toString());
double lange = Double.parseDouble(EingabeLange.getText().toString());

Intent rüberin2 = new Intent(getApplicationContext(), Main2Activity.class);
rüberin2.putExtra("breite", breite);
rüberin2.putExtra("höhe", hohe);
rüberin2.putExtra("länge", lange);
startActivity(rüberin2);

}
});
}}

主要2活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);

TextView frequenz4x4 = (TextView) findViewById(R.id.viermalvier);
TextView frequenz6x6 = (TextView) findViewById(R.id.sechsmalsechs);
TextView frequenz8x8 = (TextView) findViewById(R.id.achtmalacht);

Bundle extras = getIntent().getExtras();
double G4 = extras.getDouble("breite");
double G5 = extras.getDouble("höhe");
double G3 = extras.getDouble("länge");
final double breite = G4;
final double hohe = G5;
final double lange = G3;
double f4 = 344 / 2 / G3;
TextView Frequenz4 = (TextView) findViewById(R.id.viermalvier);
Frequenz4.setText(Double.toString((f4)));
double f6 = 344 / 2 / G4;
TextView Frequenz6 = (TextView) findViewById(R.id.sechsmalsechs);
Frequenz6.setText(Double.toString((f6)));
double f8 = 344 / 2 / G5;
TextView Frequenz8 = (TextView) findViewById(R.id.achtmalacht);
Frequenz8.setText(Double.toString((f6)));

Button button = (Button) findViewById(R.id.button8);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent rüberin8 = new Intent(getApplicationContext(), Main2Activity.class);
rüberin8.putExtra("breite", breite);
rüberin8.putExtra("höhe", hohe);
rüberin8.putExtra("länge", lange);
startActivity(rüberin8);


});
}

在您发布的代码中,似乎在方法末尾有一个"}"大括号太多onCreate()。但是,由于您只提供了部分代码,因此这可能只是您发布问题时的复制/粘贴错误。

如果这不能解决问题,请考虑以下问题:

在您的Main2Activity代码中,请尝试改用以下内容:

Intent intent = getIntent();
double G4 = intent.getDoubleExtra("breite", -1.0);
double G5 = intent.getDoubleExtra("höhe", -1.0);
double G3 = intent.getDoubleExtra("länge", -1.0);

这样,您可以设置用于比较的默认值。

您可能还遇到转换为double的问题。我认为问题是您的设备设置。我从您在设置为德国环境的设备上运行的代码中获取它。

在使用parseDouble之前,您需要将逗号 ","小数点更改为点 "." 小数点分隔符

String sBreite = EingabeBreite.getText().toString();
sBreite = sBreite.replace(",",".");
Double dBreite = Double.parseDouble(sBreite);

最新更新