【发布时间】:2016-05-14 22:18:35
【问题描述】:
我对 Android 很陌生,正在尝试构建一个食品订购应用程序,我在结帐页面上遇到问题,其中数据库应该接收来自 6 个不同活动的数据,但它只从启动的第一个活动和所有其他活动接收数据失败。有人可以告诉我如何管理它吗?在此先感谢大家
public class BaconBurgerActivity extends Activity
{
ImageView bacon_burger;
TextView bacon_burger_txt;
TextView bacon_burger_price;
TextView bacon_burger_qty;
Spinner bacon_burger_spinner;
Button bb_add_btn;
Button bb_menu_btn;
TextView bacon_burger_combo;
TextView bacon_burger_juices;
TextView bacon_burger_sides;
TextView bacon_burger_combo_qty;
Button bacon_burger_combo_add;
Spinner bacon_burger_juice_spinner;
ArrayAdapter<CharSequence> bacon_burger_juice_adapter;
Spinner bacon_burger_side_spinner;
ArrayAdapter<CharSequence> bacon_burger_side_adapter;
Spinner bacon_burger_combo_qty_spinner;
Context ctx = this;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.bacon_burger_layout);
//Bacon Burger Image and Text View
bacon_burger=(ImageView)findViewById(R.id.bb_main);
bacon_burger_txt=(TextView)findViewById(R.id.bb_text);
bacon_burger_price=(TextView)findViewById(R.id.bb_price);
bacon_burger_qty=(TextView)findViewById(R.id.bb_qty);
//Bacon Burger Spinner
Integer[] options = new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
bacon_burger_spinner=(Spinner)findViewById(R.id.bb_spinner);
ArrayAdapter<Integer> bacon_burger_adapter =new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,options);
bacon_burger_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bacon_burger_spinner.setAdapter(bacon_burger_adapter);
//Bacon Burger Buttons
bb_add_btn=(Button)findViewById(R.id.bb_add);
bb_menu_btn=(Button)findViewById(R.id.bb_back);
//Combo Image and Text View
bacon_burger_combo=(TextView)findViewById(R.id.bb_combo);
bacon_burger_juices=(TextView)findViewById(R.id.juices);
bacon_burger_sides=(TextView)findViewById(R.id.sides);
bacon_burger_combo_qty=(TextView)findViewById(R.id.bb_combo_qty);
//Combo Button
bacon_burger_combo_add=(Button)findViewById(R.id.bb_combo_add);
//Combo Juice Spinner
bacon_burger_juice_spinner=(Spinner)findViewById(R.id.bb_juice_spinner);
bacon_burger_juice_adapter=ArrayAdapter.createFromResource(this,R.array.juices,android.R.layout.simple_spinner_item);
bacon_burger_juice_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bacon_burger_juice_spinner.setAdapter(bacon_burger_juice_adapter);
//Combo Side Spinner
bacon_burger_side_spinner=(Spinner)findViewById(R.id.bb_side_spinner);
bacon_burger_side_adapter=ArrayAdapter.createFromResource(this,R.array.sides,android.R.layout.simple_spinner_item);
bacon_burger_side_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bacon_burger_side_spinner.setAdapter(bacon_burger_side_adapter);
//Combo Qty Spinner
Integer[] numbers = new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
bacon_burger_combo_qty_spinner=(Spinner)findViewById(R.id.bb_combo_spinner);
ArrayAdapter<Integer> bacon_burger_combo_adapter =new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,numbers);
bacon_burger_combo_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bacon_burger_combo_qty_spinner.setAdapter(bacon_burger_combo_adapter);
}
//Bacon Burger onClick method
public void add_btn (View view)
{
int quantity = Integer.parseInt(bacon_burger_spinner.getSelectedItem().toString());
float price =(float) 6.52;
float total= ((quantity)*(price));
String bb_order=bacon_burger_spinner.getSelectedItem().toString()+" Bacon Burger";
DatabaseOperations DB = new DatabaseOperations(ctx);
DB.putInformation(DB,bb_order,null,total);
Toast.makeText(getBaseContext(),"ITEM ADDED TO BASKET", Toast.LENGTH_LONG).show();
}
public void menu_btn (View view)
{
Intent bb_intent=new Intent(BaconBurgerActivity.this,MainActivity.class);
startActivity(bb_intent);
}
//Bacon Burger Combo onClick method
public void add_combo_btn (View view)
{
int combo_quantity= Integer.parseInt(bacon_burger_combo_qty_spinner.getSelectedItem().toString());
float bb_combo_price=(float)8.55;
float bb_combo_total= ((combo_quantity)*(bb_combo_price));
String bb_combo_order=bacon_burger_combo_qty_spinner.getSelectedItem().toString()+" Bacon Burger Combo";
String bb_juice_side=bacon_burger_side_spinner.getSelectedItem().toString()+bacon_burger_juice_spinner.getSelectedItem().toString();
DatabaseOperations DB = new DatabaseOperations(ctx);
DB.putInformation(DB,bb_combo_order,bb_juice_side,bb_combo_total);
Toast.makeText(getBaseContext(),"ITEM ADDED TO BASKET", Toast.LENGTH_LONG).show();
}
}
【问题讨论】:
-
您的活动如何将数据提供给结帐页面?
-
在其他活动中检查你的连接有两个原因导致查询中止第一个连接问题和第二个错误的SQL语句。创建日志并根据日志错误排序问题。
-
您应该将这些活动生成的数据保存在静态环境(某种缓冲区)中,因此当您到达结帐活动时,您只需查询此静态上下文即可。基本上你从记忆中获取信息。
-
Shamas S - 我上传了将数据发送到数据库的活动之一的代码,我对所有其他 5 个活动使用了相同的语句,但名称不同
-
嗨 MarkSkayff,你能解释一下吗?我不知道该怎么做,我没有编程背景,所以有些东西我真的很难理解
标签: android sqlite listview android-activity android-lifecycle