我制作的计数器应用程序从100000倒数。每次我将设备旋转90°或停止它,它再次从100000开始。如何让我的应用程序停止重置?
代码:
public class SecondActivity extends Activity {
int counter = 1000001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
public void onClick(View v){}
public void button1 (View v){
counter--;
final Button button2 = (Button) findViewById(R.id.button2);
button2.setText("" + counter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.second, menu);
return true;
}
}
答案 0 :(得分:2)
Android会在方向更改时销毁并重建当前活动。您必须通过实施onSaveInstanceState()
的{{1}}和onRestoreInstanceState()
方法来保存活动状态。
有关详细信息,请参阅developer.android.com上的this article。
答案 1 :(得分:0)
了解这一事情每次旋转手机时,即更改方向,您的活动实例都会被销毁,新的活动实例会被创建,即您的活动会重新创建,然后是活动生命周期。 您无法控制此行为,但您可以将最后一个计数器保存在 SharedPreferences 中,就像将要调用的最后一个活动方法是onDestroy()一样。在此方法中保存计数器并在onCreate()方法中获取已保存时间的值并仅从那里启动计数器。
答案 2 :(得分:0)
计数器的值不会以这种方式持续存在,您需要使用某种方法将此值保存在SharedPreferences中或至少保存在某处。