2016-05-16 2 views
0

Я новичок здесь, а также новичок в Android Studio. Мой первый проект - создать дневник для сохранения пользовательских тренировок. У меня возникли проблемы с сохранением данных.Android Studio сохраняет данные в базе данных

Вот мой front page для приложения. С помощью кнопки «Styrkeboken» («Сильная книга») я буду вводить свои наборы, повторы, вес (vikt) и упражнение (övning). Я хочу, чтобы сохранить эти данные во второй кнопке «Historik» (история), но я не могу управлять им работать, как я хочу ..

кода из моего класса «Pass» (Workout):

package com.example.mama0086.styrkeboken; 

общественного класса Pass {

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" я получаю сообщение об ошибке: «Не удается разрешить конструктор 'Pass (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 с String, только в качестве параметр Pass pass = new Pass(textSet.getText().toString());

Вам нужно будет изменить эту строку, чтобы соответствовать одному из двух конструкторов, которые вы есть, или определить 3-ий, принимая только строку в качестве аргумента

EDIT: В зависимости от Pass объекта, вы можете:

  1. объявить 3-й конструктор, только String (я предполагаю, что это övning)

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

  2. если textSet.getText().toString() не имеет значения, просто используйте конструктор по умолчанию Pass pass = new Pass();

+0

Как вы предлагаете решить этот код? – Matsson

+0

См. Мое редактирование для потенциальных решений – NSimon

+0

Это не работает. И я не знаю, почему .. EDIT: Это мой код для кнопки «Styrkeboken» Нужно ли мне что-то изменить или сделать что-нибудь здесь, чтобы сохранить данные в другой кнопке «Historik»? общественного класса Styrkeboken расширяет AppCompatActivity { @Override защищен недействительным OnCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_styrkeboken); } } – Matsson

Смежные вопросы