我想将一些双精度值从我的主活动(我通过 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);