Android Studio在数据库

时间:2016-05-16 09:48:46

标签: java android sqlite

我是新来的,也是Android Studio新手。 我的第一个项目是创建日记以保存用户锻炼。 我无法保存这些数据..

以下是该应用的front page。按下“Styrkeboken”(力量书)按钮,我将输入我的套装,代表,重量(vikt)和练习(övning)。我想在第二个按钮“Historik”(历史记录)中保存这些数据,但是我无法按照我的意愿来管理它。

我班上的代码“通过”(锻炼):

package com.example.mama0086.styrkeboken;

公共课程通过{

private int _set;
private int _reps;
private float _vikt;
private String _övning;

public Pass() {
}

public Pass(int set, int reps, float vikt, String övning) {
    this._set = set;
    this._reps = reps;
    this._vikt = vikt;                  //Vikt = weight
    this._övning = övning;              //Övning = excercise
}
public void set_set(int _set) {

    this._set = _set;
}
public void set_reps(int _reps) {

    this._reps = _reps;
}
public void set_vikt(float _vikt) {

    this._vikt = _vikt;
}
public void set_övning(String _övning) {

    this._övning = _övning;
}
public int get_set() {

    return _set;
}
public int get_reps() {

    return _reps;
}
public float get_vikt() {

    return _vikt;
}
public String get_övning() {

    return _övning;
}

}

我的课程“Historik”(历史)中的代码:

public class Historik扩展了AppCompatActivity {

EditText editSet;
TextView textSet;
EditText editReps;
TextView textReps;
EditText editVikt;
TextView textVikt;
EditText editÖvning;
TextView textÖvning;
MyDBHandler dbHandler;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_historik);
    editSet = (EditText) findViewById(R.id.editSet);
    textSet = (TextView) findViewById(R.id.textSet);
    editReps = (EditText) findViewById(R.id.editReps);
    textReps = (TextView) findViewById(R.id.textReps);
    editVikt = (EditText) findViewById(R.id.editVikt);
    textVikt = (TextView) findViewById(R.id.textVikt);
    editÖvning = (EditText) findViewById(R.id.editÖvning);
    textÖvning = (TextView) findViewById(R.id.textÖvning);
    dbHandler = new MyDBHandler(this, null, null, 1);
    printDatabase();

}

//Add excercise
public void addBtn(View view){
    Pass pass = new Pass(textSet.getText().toString());     //Pass is swedish for work-out
    dbHandler.addPass(pass);
    printDatabase();
}
public void removeBtn(){
    String inputText = textSet.getText().toString();
    dbHandler.deletePass(inputText);
    printDatabase();
}

public void printDatabase(){
    String dbString = dbHandler.historikToString();
    textSet.setText(dbString);
    editSet.setText("");
    textReps.setText(dbString);
    editReps.setText("");
    textVikt.setText(dbString);
    editVikt.setText("");
    textÖvning.setText(dbString);
    editÖvning.setText("");
}

}

在“Historik”类中,我收到以下错误消息: “无法解析构造函数'Pass(java.lang.String)'

如果您需要我的数据库代码,请告诉我。 我很感激帮助!

1 个答案:

答案 0 :(得分:1)

您为Pass类定义了2个不同的构造函数:

public Pass() {

}

public Pass(int set, int reps, float vikt, String övning) {
    this._set = set;
    this._reps = reps;
    this._vikt = vikt;                  //Vikt = weight
    this._övning = övning;              //Övning = excercise
}

但是,在您的Historik活动中,您尝试仅使用String作为参数Pass

来实例化新的Pass pass = new Pass(textSet.getText().toString());

您需要更改此行以匹配您拥有的2个构造函数之一,或者定义仅将String作为参数的第3个

编辑:根据您的Pass对象,您可以:

  1. 声明第三个构造函数只接受一个字符串(我假设它是övning)

    public Pass(Stringövning){   this._övning=övning; }

  2. 如果textSet.getText().toString()不相关,只需使用默认构造函数Pass pass = new Pass();