Я использую Android Studio для создания приложения и моделирования базы данных с использованием Firebase. В настоящее время я пытаюсь включить приложение для ввода и отображения данных, которые я вводил через Firebase. Хотя я использую метод моментальных снимков данных Firebase для сбора данных, я не могу сохранять и использовать данные из-за того, что моментальный снимок происходит во внутреннем классе.Изменение значения переменной внутри внутреннего класса
Например, в Firebase я присвоил значение «Fri» «2 шага». Если вы посмотрите на приведенный ниже код, первый оператор печати (внутри внутреннего класса) печатает «Пятничные шаги: 2 шага», но второй оператор печати (вне внутреннего класса) печатает «Пятнадцать шагов: null». Это проблема, потому что я должен иметь возможность использовать правильное значение fridaySteps (а также переменные String других будних дней), в последующих операторах присваивания, которые присваивают значения mDataset.
public class MainActivity extends AppCompatActivity {
private String[] mDataset = new String[7];
String fridaySteps;
String thursdaySteps;
String wednesdaySteps;
String tuesdaySteps;
String mondaySteps;
@Override
protected void onCreate(Bundle savedInstanceState) {
mDataset[0]= "";
mDataset[1]= "";
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Firebase.setAndroidContext(this);
Firebase ref = new Firebase(Config.FIREBASE_URL);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
fridaySteps = snapshot.child("Fri").getValue(String.class);
thursdaySteps = snapshot.child("Thu").getValue(String.class);
wednesdaySteps = snapshot.child("Wed").getValue(String.class);
tuesdaySteps = snapshot.child("Tue").getValue(String.class);
mondaySteps = snapshot.child("Mon").getValue(String.class);
System.out.println("Friday Steps: "+fridaySteps);
}
@Override public void onCancelled(FirebaseError error) { }
});
System.out.println("Friday Steps: "+fridaySteps);
mDataset[2] = ("Fri "+fridaySteps);
mDataset[3] = ("Thu "+thursdaySteps);
mDataset[4] = ("Wed "+wednesdaySteps);
mDataset[5] = ("Tue "+tuesdaySteps);
mDataset[6] = ("Mon "+mondaySteps);
}
}
У кого-нибудь есть советы, как я могу исправить эту проблему? Благодаря!
Можете ли вы присвоить значения 'mDataset' внутри' onDataChange'? У вас их нет, потому что извлечение данных из Firebase происходит асинхронно –