0
我想開發一個應用程序,它在旋轉時保留其TextView和EditText中的值。我還想在未選擇EditText時隱藏軟鍵盤。但是,由於某種原因,當results
可見時,hideKeyboard()
方法在多次旋轉後崩潰。Android - 隱藏多次旋轉的軟鍵盤崩潰的方法
下面是我的一些方法,可能是罪魁禍首:
/**
* Detects if text boxes are not selected to hide keyboard
* @param view - main view
*/
private void setupUI(View view) {
if(!(view instanceof EditText)) {
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
hideKeyboard();
return false;
}
});
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setupUI(innerView);
}
}
}
/**
* Hides software keyboard
*/
private void hideKeyboard() {
InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);
}
/**
* Saves instance state on rotation
* @param outState - current state before rotation
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("loabox", loaBox.getText().toString());
outState.putString("lwlbox", lwlBox.getText().toString());
outState.putString("beambox", beamBox.getText().toString());
outState.putString("displacementbox", displacementBox.getText().toString());
outState.putString("sabox", saBox.getText().toString());
if (results != null && !isEmpty(mhsText) && !isEmpty(dlText) && !isEmpty(sadText) && !isEmpty(capsizeText) && !isEmpty(comfortText)) {
outState.putInt("results", results.getVisibility());
outState.putString("mhs", mhsText.getText().toString());
outState.putString("dl", dlText.getText().toString());
outState.putString("sad", sadText.getText().toString());
outState.putString("capsize", capsizeText.getText().toString());
outState.putString("comfort", comfortText.getText().toString());
}
super.onSaveInstanceState(outState);
}
/**
* Restores previous instance state after rotation
* @param savedInstanceState - saved previous state before rotation
*/
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null) {
loaBox.setText(savedInstanceState.getString("loabox"));
lwlBox.setText(savedInstanceState.getString("lwlbox"));
beamBox.setText(savedInstanceState.getString("beambox"));
displacementBox.setText(savedInstanceState.getString("displacementbox"));
saBox.setText(savedInstanceState.getString("sabox"));
mhsText.setText(savedInstanceState.getString("mhs"));
dlText.setText(savedInstanceState.getString("dl"));
sadText.setText(savedInstanceState.getString("sad"));
capsizeText.setText(savedInstanceState.getString("capsize"));
comfortText.setText(savedInstanceState.getString("comfort"));
results.setVisibility(savedInstanceState.getInt("results", results.getVisibility()));
}
}
的setupUI()
方法被稱爲我的onCreate()
方法結束。
有沒有人知道這裏會出現什麼問題?
請把它添加到您的清單「<活動機器人:windowSoftInputMode =‘stateAlwaysHidden’ >' – SathishKumar
不,沒有工作。 –
您是否將此添加到您擁有edittext的活動中? – SathishKumar