2017-02-26 107 views
-4

我正在Android Studio中製作一個應用程序,該應用程序允許用戶將項目添加到購物清單。我無法實現數據庫的添加功能。我希望用戶能夠在兩個編輯文本框中輸入項目名稱和數量,然後將這些信息存儲在我的數據庫中。設置數據庫並嘗試實現添加功能時,我使用thesetutorials如何解決android.support.v7.widget.AppCompatEditText無法轉換爲java.lang.CharSequence

目前,當我運行代碼時,它會在我的設備上顯示應用程序;但是當我點擊一個按鈕,去到這個活動所代表的頁面,我得到這個錯誤和應用程序崩潰:

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

在你onCreate使用

addAnItem.setText(addAnItem..getText().toString()); 
    addQuantity.setText(addQuantity.getText().toString()); 

代替

addAnItem.setText((CharSequence)addAnItem); 
    addQuantity.setText((CharSequence)addQuantity); 
+0

好吧,現在我可以打開頁面,但是由於某種原因,我的EditText不會顯示出來。 –

+0

我真的不明白你在這裏試圖實現什麼!但這是從'edittext'獲取文本的方式 –

0

的EditText是一個視圖對象而的setText方法接受字符串或CharSequence中。 你不能設置文字來查看對象,這是沒有意義的。你想要的是

String text = addAnItem.getText().toString(); 
addAnItem.setText(text); 

但我仍然不明白你的代碼應該做什麼,你正在設置一個視圖文本本身?

+0

我跟着一個教程,這是我在Android Studio中做過的第一件事,我不確定它是如何工作的。 –

相關問題