0

我制作了一个从 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;
    }

}
4

3 回答 3

2

Android 在方向更改时销毁并重建当前活动。您必须通过onSaveInstanceState()实现.onRestoreInstanceState()Activity

有关详细信息,请参阅developer.android.com 上的这篇文章

于 2013-10-26T17:11:01.247 回答
0

了解这件事每次您旋转手机时,即改变方向,您的活动实例都会被破坏并创建新的活动实例,即重新创建您的活动,然后是活动生命周期。您无法控制此行为,但您可以将最后一个计数器保存在SharedPreferences中,就像最后一个将被调用的活动方法是 onDestroy()。在此方法中保存计数器并在 onCreate() 方法中获取保存时间的值并仅从那里启动计数器。

于 2013-10-26T17:14:06.773 回答
0

计数器的值不会以这种方式持续存在,您需要使用某种方式将这个值保存在 SharedPreferences 或至少某个地方。

于 2013-10-26T18:03:31.400 回答