java如何计算用户点击按钮的次数以及如何保存按钮。安卓工作室
我目前正在使用Android Studio制作一个Android应用程序,它的一个功能是收集用户点击某个按钮的次数,并将其存储,然后将其显示在条形图上。这是一个情绪跟踪器。然而,计数器位于一个片段上,每当我离开应用程序或活动时,它只会重置我不想要的值
条形图的代码:
SharedPreferences preferences = requireActivity().getSharedPreferences("MY_PREFERENCES", Context.MODE_PRIVATE);
BarGraphSeries series1 = new BarGraphSeries<>(new DataPoint[] {
new DataPoint(1, preferences.getInt("Elated", elatedTimes)),
new DataPoint(2, preferences.getInt("Happy", happyTimes)),
new DataPoint(3, preferences.getInt("Meh", mehTimes)),
new DataPoint(4, preferences.getInt("Sad", sadTimes)),
new DataPoint(5, preferences.getInt("Angry", angryTimes))
});
graphView.addSeries(series1);
// styling
StaticLabelsFormatter staticLabelsFormatter = new StaticLabelsFormatter(graphView);
staticLabelsFormatter.setHorizontalLabels(new String[] {"Elated", "Happy", "Meh", "Sad", "Angry"});
graphView.getGridLabelRenderer().setLabelFormatter(staticLabelsFormatter);
series1.setValueDependentColor(new ValueDependentColor<DataPoint>() {
@Override
public int get(DataPoint data) {
return Color.rgb((int) data.getX()*255/4, (int) Math.abs(data.getY()*255/6), 100);
}
});
series1.setSpacing(50);
series1.setAnimated(true);
graphView.getGridLabelRenderer().setLabelsSpace(8);
graphView.getViewport().setMinY(0);
graphView.getViewport().setYAxisBoundsManual(true);
// draw values on top
series1.setDrawValuesOnTop(true);
series1.setValuesOnTopColor(Color.RED);
要保存的情绪之一的代码:
elatedCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences preferences = requireActivity().getSharedPreferences("MY_PREFERENCES", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("Happy", elatedTimes++);
editor.apply();
final Dialog elatedDialog = new Dialog(HomeFragment.this.getContext());
elatedDialog.setContentView(R.layout.elated_dialog_design);
elatedDialog.show();
elatedDialogButton = (Button) elatedDialog.findViewById(R.id.elated_dialog_button);
//Performing action on Button Click
elatedDialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final Intent intent;
intent = new Intent(getContext(), ventingPage.class);
startActivity(intent);
}
});
}
});
(它位于onViewCreated()中)
最后是onPause()的代码,它不起作用:
@Override
public void onPause(){
SharedPreferences.Editor editor = requireActivity().getSharedPreferences("MY_PREFERENCES", Context.MODE_PRIVATE).edit();
editor.putInt("Elated", elatedTimes);
editor.apply();
super.onPause();
}
所以基本上我的问题是
- 如何在不重置整型计数器的情况下,将整型计数器保存在片段中并显示在条形图上李>
非常感谢
# 1 楼答案
每次都使用会话变量
elatedTimes
覆盖elated
中的SharedPreferences
值,而在设置之前,先获取值,然后设置它们的总和,如下所示: