Java Android:我需要帮助将一个双值从一个视图传递到另一个视图
我正在尝试创建一个餐厅菜单应用程序,允许您选择不同的食物和饮料量,当您单击按钮“总计”时,它将转到第二个视图显示:“您的总计为:\ \ \ \ \ \”。但是我犯了很多错误。如果有人能帮我,我会很感激的。我对这个很陌生,所以我从这个网站上其他问题的答案中拼凑了一些代码。谢谢大家! 主要活动视图:Java Android:我需要帮助将一个双值从一个视图传递到另一个视图,java,android,android-intent,Java,Android,Android Intent,我正在尝试创建一个餐厅菜单应用程序,允许您选择不同的食物和饮料量,当您单击按钮“总计”时,它将转到第二个视图显示:“您的总计为:\ \ \ \ \ \”。但是我犯了很多错误。如果有人能帮我,我会很感激的。我对这个很陌生,所以我从这个网站上其他问题的答案中拼凑了一些代码。谢谢大家! 主要活动视图: package name.restaurantmenu2; import android.content.Intent; import android.support.v7.app.AppCo
package name.restaurantmenu2;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
double totalPrice = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CheckBox pizzaCB = (CheckBox)findViewById(R.id.cb_pizza);
if(pizzaCB.isChecked()){
pizzaCB.toggle();
}
CheckBox burgerCB = (CheckBox)findViewById(R.id.cb_hamburger);
if(burgerCB.isChecked()){
burgerCB.toggle();
}
CheckBox hotdogCB = (CheckBox)findViewById(R.id.cb_hotdog);
if(hotdogCB.isChecked()){
hotdogCB.toggle();
}
CheckBox sodaCB = (CheckBox)findViewById(R.id.cb_soda);
if(sodaCB.isChecked()){
sodaCB.toggle();
}
}
public void addSelected(View view){
String multiple;
CheckBox pizzaCB = (CheckBox)findViewById(R.id.cb_pizza);
CheckBox burgerCB = (CheckBox)findViewById(R.id.cb_hamburger);
CheckBox hotdogCB = (CheckBox)findViewById(R.id.cb_hotdog);
CheckBox sodaCB = (CheckBox)findViewById(R.id.cb_soda);
TextView pizzaTV = (TextView)findViewById(R.id.tv_pizzaPrice);
TextView burgerTV = (TextView)findViewById(R.id.tv_hamburgerPrice);
TextView hotdogTV = (TextView)findViewById(R.id.tv_hotdogPrice);
TextView sodaTV = (TextView)findViewById(R.id.tv_sodaPrice);
Spinner pizzaQty = (Spinner)findViewById(R.id.spinner_pizzaQuantity);
Spinner burgerQty = (Spinner)findViewById(R.id.spinner_hamburgerQuantity);
Spinner hotdogQty = (Spinner)findViewById(R.id.spinner_hotdogQuantity);
Spinner sodaQty = (Spinner)findViewById(R.id.spinner_drinks);
if(pizzaCB.isChecked()) {
String value = pizzaTV.getText().toString();
value = value.replace('$', ' ');
multiple = String.valueOf(Double.parseDouble(pizzaQty.getSelectedItem().toString()) * Double.parseDouble(value));
totalPrice++;
}
if(burgerCB.isChecked()) {
String value = burgerTV.getText().toString();
value = value.replace('$', ' ');
multiple = String.valueOf(Double.parseDouble(burgerQty.getSelectedItem().toString()) * Double.parseDouble(value));
totalPrice++;
}
if(hotdogCB.isChecked()) {
String value = hotdogTV.getText().toString();
value = value.replace('$', ' ');
multiple = String.valueOf(Double.parseDouble(hotdogQty.getSelectedItem().toString()) * Double.parseDouble(value));
totalPrice++;
}
if(sodaCB.isChecked()) {
String value = sodaTV.getText().toString();
value = value.replace('$', ' ');
multiple = String.valueOf(Double.parseDouble(sodaQty.getSelectedItem().toString()) * Double.parseDouble(value));
totalPrice++;
}
}
public void onTotalClick(View view){
Intent intent = new Intent(this, ComputedActivity.class);
Bundle b = new Bundle();
b.putDouble(totalPrice, double);
intent.putExtras(b);
startActivity(intent);
}
}
视图2
package name.restaurantmenu2;
import android.annotation.TargetApi;
import android.content.Intent;
import android.icu.text.NumberFormat;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.TextView;
public class ComputedActivity extends AppCompatActivity {
public static final String EXTRA_MESSAGE = "Nothing to display";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_computed2);
}
@TargetApi(Build.VERSION_CODES.N)
private void displayPrice(double number){
Bundle b = getIntent().getExtras();
double result = b.getDouble(totalPrice);
TextView priceTextView = (TextView)findViewById(R.id.tv_totalPrice);
priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
}
}
首先,您使用的
bundle.putdoull(字符串名称,双值)
方法是错误的。它应该是bundle.putDouble(“NameOfYourDouble”,actualDouble)
在活动2中:
Intent intent = getIntent();
double myDouble = intent.getDoubleExtra("MyDouble", 0);
分析双精度转换字符串时,在用“”替换$时,使用字符串中的空白进行分析时,addSelected()中可能会发生异常。尝试处理异常第一个错误是什么?错误是什么?请把原木贴在猫身上
Intent intent = getIntent();
double myDouble = intent.getDoubleExtra("MyDouble", 0);