Android 当我使用另一个活动返回时,变量I increment会自动重置

Android 当我使用另一个活动返回时,变量I increment会自动重置,android,performance,android-layout,Android,Performance,Android Layout,我正在制作一个应用程序,在点击按钮时增加一个计数器,同时进入下一个活动。我干杯,看看它是否管用,是否管用。 我的应用程序是这样的,在主页上按开始键,然后进入页面,在页面上有一个按钮,您可以单击该按钮增加一个变量,然后进入下一页,依此类推。当我使用屏幕菜单上的返回按钮时,再次按该按钮,它会增加,但是,当我走到最后,回到主页面,再次按下开始按钮,然后按下按钮,它会返回到1,因此它会自行重置。我如何修复它,以便即使按下开始按钮,变量也会保持其值 以下是主页的代码: public class MainP

我正在制作一个应用程序,在点击按钮时增加一个计数器,同时进入下一个活动。我干杯,看看它是否管用,是否管用。 我的应用程序是这样的,在主页上按开始键,然后进入页面,在页面上有一个按钮,您可以单击该按钮增加一个变量,然后进入下一页,依此类推。当我使用屏幕菜单上的返回按钮时,再次按该按钮,它会增加,但是,当我走到最后,回到主页面,再次按下开始按钮,然后按下按钮,它会返回到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 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();
    }

您从SharedReference中获取值并在textView上进行设置的位置?您是否可以尝试将代码缩减为一个值?您是否考虑过在起始页上创建新活动?非常感谢!你能告诉我如何制作一个重置按钮,使变量重置为0吗?@Saisriram太棒了!记住,如果它有用,请将其标记为已接受,以便其他人也能从中受益。只需在创建
final button hbone
时创建一个按钮,然后单击“只需将首选项设置为
0
”<代码>编辑器.putInt(“headboy1”,0)我接受了它,我制作了一个新按钮,并将onClick设置为editor.putInt(“headboy1”,0);但是如果可能的话,它不起作用。你能像回答问题那样发布该部分的全部代码吗?@Saisriram在那之后你调用了
commit()
apply()
吗?哦,是的,对不起,我的天啊,你真是个天才。上一个qn但如何在另一个活动上重置变量,而不是在该活动上重置
 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();
    }