我正在嘗試創建一個基本應用程序,該程序只計算用戶將方向從縱向更改爲縱向的次數,並在屏幕上顯示計數。我有:Android計數用戶更改方向的次數
public class MainActivity extends Activity {
int count = 0;
private static boolean inLandscape = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.count);
tv.setText(getResources().getString(R.string.count) + ' ' + count);
if (!inLandscape && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
inLandscape = true;
count++;
Log.e("Debug","In Landscape " + count);
}
else if (inLandscape && getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
inLandscape = false;
}
問題是,在我的調試語句中count總是1,並且文本在屏幕上永遠不會改變。做一些研究,我認爲這是因爲每當方向發生變化時,活動都會被丟棄並重新創建。如何在整個方位變化中保持變量值?
我嘗試使用savedInstanceState與
if (savedInstanceState.containsKey("count"))
count = savedInstanceState.getInt("count");
savedInstanceState.putInt("count", count);
但是這給在containsKey
線一個NullPointerException。
請參閱http://stackoverflow.com/questions/8248274/android-detect-orientation-changed檢測東方變化 –
我不想使用方向更改事件爲這個項目,因爲我使用佈局 - 土地和佈局端口文件。我寧願讓Android處理方向更改。 – awestover89