我的Android应用的共享偏好设置存在问题。它保存数据并检索但不能使用计数器。
当我点击该按钮时,它会在TextView
中增加0.0005,因此必须在按钮事件中保存SharePref
。现在,当我重新启动应用程序时,它会检索它,但现在点击按钮它会与计数器相同。重新启动应用程序后,然后单击它后,计数器启动时返回。这意味着单击按钮后,共享首选项数据会以某种方式丢失。
public class MainActivity extends AppCompatActivity {
Button btn1;
TextView t1;
float counter = 0;
float adding = (float) 0.0005;
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t1 = (TextView)findViewById(R.id.textView);
sharedpreferences = getSharedPreferences("MyPREFERENCES", Context.MODE_PRIVATE);
t1.setText(String.valueOf(sharedpreferences.getFloat("key",0)));
}
public void AdButton(View v) //Button Onclick
{
counter = counter+adding;
strCounter = Float.toString(counter);
t1.setText(strCounter);
sharedpreferences = getSharedPreferences("MyPREFERENCES", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putFloat("key", counter);
editor.commit();
}
}
答案 0 :(得分:0)
根据您的理解,您希望将counter
值保存为共享首选项并在应用程序启动时再次检索它,然后单击按钮,您将增加它并在共享首选项中再次保存。正确的吗?
简单地说,你所做的是当应用程序启动时,你在文本视图中显示保存的值(如果存在),但是你不能将它保留在计数器中!所以counter是零
您必须在检索后将其保留在计数器中,在显示textview上的值之后或之前在onCreate
中添加此行。
counter = sharedpreferences.getFloat("key",0);
答案 1 :(得分:0)
在再次添加计数器之前,您忘记检索计数器的值。 只需使用:
public void AdButton(View v) //Button Onclick
{
sharedpreferences = getActivity().getSharedPreferences("MyPREFERENCES", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
counter = sharedpreferences.getFloat("key",0);
counter = counter + adding;
String strCounter = Float.toString(counter);
t1.setText(strCounter);
editor.putFloat("key", counter);
editor.commit();
}