我正在制作一个应用程序,它在单击按钮时增加一个计数器并同时转到下一个活动。我敬酒,看看它是否有效,它确实有效。我的应用程序是这样的,在主页上你按下开始,然后你被带到一个页面,那里有一个按钮,你可以点击它增加一个变量并带你到下一页等等。当我使用返回时屏幕菜单上的按钮,然后再次按下按钮它会增加,但是当我走到最后并返回主页面并再次按下开始并按下按钮时它会回到1,所以它会自行重置我该怎么做修复它以便即使按下开始按钮变量也应该保持其值?
这是主页面的代码:
public class MainPage extends Activity {
@Override
protected void onResume() {
hideNavigationBar();
super.onResume();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_page);
hideNavigationBar();
Button mainPage = (Button)findViewById(R.id.mainPage);
mainPage.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(MainPage.this, HeadBoy.class);
startActivity(intent);
}
});
ImageButton resultClick = (ImageButton) findViewById(R.id.resultClick);
resultClick.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(MainPage.this, Results.class);
startActivity(intent);
}
});
}
这是第二页的代码(计数器递增的那一页):
public class HeadBoy extends AppCompatActivity {
SharedPreferences.Editor editor;
int hb1 ;
int hb2 ;
public static final String HEAD_BOY_ONE = "count";
public static final String HEAD_BOY_TWO = "counttwo";
@Override
protected void onResume() {
hideNavigationBar();
super.onResume();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_head_boy);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
final Button hbone = (Button) findViewById(R.id.hbOne);
final Button hbtwo = (Button) findViewById(R.id.hbTwo);
hbone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
increment();
Intent intent = new Intent(HeadBoy.this,HeadGirl.class);
startActivity(intent);
}
});
hbtwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(HeadBoy.this,HeadGirl.class);
startActivity(intent);
}
});
hideNavigationBar();
}
public void increment(){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
hb1 = hb1 + 1;
editor.putInt("headboy1", hb1);
editor.apply();
Toast.makeText(this,Integer.toString(hb1),Toast.LENGTH_LONG).show();
}
这是最后一页:
public class Results extends AppCompatActivity {
@Override
protected void onResume() {
super.onResume();
hideNavigationBar();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int headboyResult = prefs.getInt("headboy1", 0);
TextView headBoy = (TextView) findViewById(R.id.headBoy);
headBoy.setText(Integer.toString(headboyResult));
Button btn = (Button)findViewById(R.id.returnButton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent back = new Intent(Results.this,MainPage.class);
startActivity(back);
}
});
Button reset = (Button) findViewById(R.id.resetAll);
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// editor.putInt("headboy1", 0);
}
});
这样做的原因是,您没有读取计数器的存储值。每次重新创建活动时,计数器都会初始化为 0。
更改方法如下:
public void increment(){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
hb1 = prefs.getInt("headboy1",0);
hb1 = hb1 + 1;
editor.putInt("headboy1", hb1);
editor.apply();
Toast.makeText(this,Integer.toString(hb1),Toast.LENGTH_LONG).show();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句