2016-05-16 281 views
0

我是新來的,也是Android Studio的新手。 我的第一個項目是創建一個日記來保存用戶鍛鍊。 我無法保存此數據。Android Studio將數據保存在數據庫中

這是我的front page爲應用程序。通過按鈕「Styrkeboken」(Strengthbook),我將輸入我的套裝,代表,體重(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」(歷史)

代碼:

公共類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」 類我收到此錯誤信息: 「無法解析構造 '通行證(java.lang.String中)'

請讓我知道你是否需要我的數據庫的代碼。 我很感激幫助!

+0

後您的dbhelper類...你的**,我不能管理它意味着什麼,因爲我的工作想要..** ?? –

回答

1

您定義的2層不同的構造爲您Pass類:

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活動

但是,你試圖實例化一個新的Pass用字符串僅作爲參數Pass pass = new Pass(textSet.getText().toString());

您需要更改此行以匹配2個構造函數之一有,或者定義一個第三一個只取一個String作爲參數

編輯:根據您的Pass對象上,您可以:

  1. 宣佈第三構造只取一個字符串(我以爲它övning)

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

  2. 如果textSet.getText().toString()是不相關的,簡單地使用默認的構造函數Pass pass = new Pass();

+0

你會如何建議解決代碼? – Matsson

+0

看我編輯潛在的解決方案 – NSimon

+0

它不起作用..我不知道爲什麼.. 編輯: 這是我的代碼按鈕「Styrkeboken」 我需要改變或在這裏做一些事情,以便能夠將數據保存在另一個按鈕「Historik」? public class Styrkeboken extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_styrkeboken); } } – Matsson