我是新来的,也是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)'
如果您需要我的数据库代码,请告诉我。 我很感激帮助!
答案 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
对象,您可以:
声明第三个构造函数只接受一个字符串(我假设它是övning)
public Pass(Stringövning){ this._övning=övning; }
如果textSet.getText().toString()
不相关,只需使用默认构造函数Pass pass = new Pass();