簡體   English   中英

通過sqlite助手將在EditText中輸入的浮點值插入android的數據庫

[英]to insert float values entered in EditText into databse of android thru sqlite helper

我是Java的新手,也是Android的新手...我試圖搜索相同的問題,但是如果itz已經在那里,我感到抱歉,因為我無法理解是否有...。

問題與類型轉換有關。

public class Ingredients_Add extends Activity {

    EditText IngredientName=null;
    EditText IngredientQuantity=null;
    EditText IngredientUnit=null;
    EditText IngredientCost=null;
    MenuManagement_SQLHelper helper=null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);       
            setContentView(R.layout.ingredients_add);

        helper=new MenuManagement_SQLHelper(this);
        IngredientName=(EditText)findViewById(R.id.lnrAddIngredients_edtxtName);
        IngredientQuantity=(EditText)findViewById(R.id.lnrAddIngredients_edtxtQuantity);
        IngredientUnit=(EditText)findViewById(R.id.lnrAddIngredients_edtxtUnit);
        IngredientCost=(EditText)findViewById(R.id.lnrAddIngredients_edtxtCost);

        float IngredientQuantityfloat=Float.valueOf(IngredientQuantity.getText().toString());
        float IngredientCostfloat=Float.valueOf(IngredientCost.getText().toString()); 

        Button SaveIngredients=(Button)findViewById(R.id.lnrAddIngredients_btnSave);
        SaveIngredients.setOnClickListener(onSave);
    }

我有問題

IngredientQuantity=(EditText)findViewById(R.id.lnrAddIngredients_edtxtQuantity);
IngredientCost=(EditText)findViewById(R.id.lnrAddIngredients_edtxtCost);

這兩個編輯框返回用戶輸入的Float值...

以下是我的按鈕單擊保存代碼,它將值傳遞給SQLHelper類,這里我將其命名為“ MenuManagement_SQLHelper”

private View.OnClickListener onSave=new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            helper.insertIngredients(IngredientName.getText().toString(), IngredientQuantityfloat, IngredientUnit.getText().toString(), IngredientCostfloat);
        }
    };

以下代碼適用於sqlhelper類:

public class MenuManagement_SQLHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME="menu_management.db";
    private static final int SCHEMA_VERSION=1;

    public MenuManagement_SQLHelper(Context context) {
        super(context, DATABASE_NAME,null,SCHEMA_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE tblIngredients (_id INTEGER PRIMARY KEY AUTOINCREMENT, Ingredient_name TEXT,Ingredient_quantity FLOAT,Ingredient_unit TEXT,Ingredient_cost FLOAT);");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

    public void insertIngredients(String IngredientName,Float IngredientQuantity,String IngredientUnit,Float Ingredientcost){
        ContentValues cv= new ContentValues();
        cv.put("IngredientName", IngredientName);
        cv.put("IngredientQuantity", IngredientQuantity);
        cv.put("IngredientUnit", IngredientUnit);
        cv.put("Ingredientcost", Ingredientcost);
        getWritableDatabase().insert("tblIngredients","IngredientName", cv);
    }

我面臨的問題:-IngredientQuantityfloat無法解析為變量IngredientQuantityfloat無法解析為變量

問題是浮點型變量的問題...早些時候是函數不匹配,因為我正在傳遞字符串,並且在sqlhelper中被聲明為float->“您必須將其轉換為float”

現在解析后,它給

無法解析為變量...

sdk信息(盡管不是必需的)

 android:versionCode="1"
android:versionName="1.0" 
android:minSdkVersion="8"

提前thnx

對我來說,這似乎是一個范圍問題。 您在活動的onCreate方法中定義了IngredientQuantityfloat ,但是(可能)您試圖在OnClickListener( onSave ?)中引用它。

public void onCreate(Bundle savedInstanceState) {
    ...
    float IngredientQuantityfloat=Float.valueOf(IngredientQuantity.getText().toString());
    ...
}

public void onClick(View v) {
    ...
    helper.insertIngredients(IngredientName.getText().toString(), IngredientQuantityfloat, IngredientUnit.getText().toString(), IngredientCostfloat);
    ...
}

換句話說: IngredientQuantityfloat是在本地聲明的,並且僅存在於onCreate方法中。 如果要從活動的另一部分訪問它,則需要使其成為類變量/成員:

public class Ingredients_Add extends Activity {

    float IngredientQuantityfloat;
    EditText IngredientName=null;
    ...

    public void onCreate(Bundle savedInstanceState) {
       ...
       IngredientQuantityfloat=Float.valueOf(IngredientQuantity.getText().toString());
       ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM