我在Android Studio中制作一个应用程序,允许用户将商品添加到购物清单中。我无法实现数据库的添加功能。我希望用户能够在两个编辑文本框中键入项目名称和数量,然后将这些信息存储在我的数据库中。在设置数据库并尝试实现添加功能时,我使用了these tutorials。
目前,当我运行代码时,它会在我的设备上显示应用程序;但当我单击按钮转到此活动所代表的页面时,我收到此错误并且应用程序崩溃:
android.support.v7.widget.AppCompatEditText无法强制转换为java.lang.CharSequence
以下是我在活动中的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
id = getIntent().getIntExtra(MainActivity.KEY_ID, 0);
setContentView(R.layout.activity_add);
EditText addAnItem = (EditText) findViewById(R.id.add_item);
EditText addQuantity = (EditText) findViewById(R.id.add_quantity);
saveButton = (Button) findViewById(R.id.saveButton);
saveButton.setOnClickListener(this);
DBHandler db = new DBHandler(this);
addAnItem.setText((CharSequence)addAnItem);
addAnItem.setFocusable(false);
addAnItem.setClickable(false);
addQuantity.setText((CharSequence)addQuantity);
addQuantity.setFocusable(false);
addQuantity.setClickable(false);
}
public void onClick(View view) {
String itemName = addAnItem.getText().toString();
String itemQuantity = addQuantity.getText().toString();
db.addItem(new Item(id, itemName, itemQuantity));
}
数据库添加功能:
public void addItem(Item item) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, item.getItemName());
values.put(KEY_QUANTITY, item.getItemQuantity());
db.insert(TABLE_LITEMS, null, values);
db.close();
}
项目类:
public class Item {
private int id;
private String itemName;
private String itemQuantity;
public Item(){
}
public Item(int id,String itemName,String itemQuantity){
this.id=id;
this.itemName=itemName;
this.itemQuantity=itemQuantity;
}
public void setId(int id) {
this.id = id;
}
public void setItemName(String itemName){
this.itemName = itemName;
}
public void setItemQuantity(String itemQuantity){
this.itemQuantity = itemQuantity;
}
public int getId() {
return id;
}
public String getItemName(){
return itemName;
}
public String getItemQuantity(){
return itemQuantity;
}
}
我在活动中使用了CharSequence,因为否则它会给我
无法解析方法setText(android.widget.EditText)
我无法找到解决该错误的其他方法。
为了将用户提供的项目添加到我的数据库,我可以对代码进行哪些修改?
答案 0 :(得分:0)
在onCreate
使用
addAnItem.setText(addAnItem..getText().toString());
addQuantity.setText(addQuantity.getText().toString());
而不是
addAnItem.setText((CharSequence)addAnItem);
addQuantity.setText((CharSequence)addQuantity);
答案 1 :(得分:0)
EditText是一个视图对象,而setText方法则使用String或CharSequence。 你不能设置文本来查看对象,它没有意义。你想要的是
String text = addAnItem.getText().toString();
addAnItem.setText(text);
但是我仍然不明白你的代码应该做什么,你是在为自己设置视图的文本吗?