2015-01-07 82 views
0

旋轉平板電腦後密碼和郵件字段的內容被覆蓋。當在電子郵件和密碼字段中寫入內容時,打開設備以旋轉視圖,然後密碼在電子郵件字段中顯示(電子郵件文本被密碼覆蓋),但密碼文本與以前保持一致(密碼不可見)。 這真的很奇怪。爲什麼在編輯文本中旋轉屏幕時文本被覆蓋

此外,我沒有使用內置的EditText,而是通過擴展Relativelayout自定義文本字段,該對象具有autoCompleteText和按鈕。你可以在下面看到code

public class CustomClearableEditText extends RelativeLayout { 

void initViews() { 
    inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.clearable_edit_text, this, true); 
    edit_text = (AutoCompleteTextView) findViewById(R.id.clearable_edit); 
    btn_clear = (Button) findViewById(R.id.clearable_button_clear); 
    btn_clear.setVisibility(RelativeLayout.INVISIBLE); 
    clearText(); 
    showHideClearButton(); 
} 
public void setEmailAddressAutoCompleteAdapter(ArrayAdapter<String> adapter) { 
    if (adapter != null) 
     edit_text.setAdapter(adapter); 
} 
public void setInputType(String type) { 
    if (type.equals(INPUT_TYPE_EMAIL)) { 
     edit_text.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); 
     edit_text.setHint("email"); 
    } else if (type.equals(INPUT_TYPE_PASSWORD)) { 
     edit_text.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
     edit_text.setHint("password"); 

    } 
} 

}

而且我用這個自定義的控制通過下面的代碼

emailText = (CustomClearableEditText) findViewById(R.id.email_address); 
    emailText.setInputType(CustomClearableEditText.INPUT_TYPE_EMAIL); 
    passwdText = (CustomClearableEditText) findViewById(R.id.password); 
    passwdText.setInputType(CustomClearableEditText.INPUT_TYPE_PASSWORD); 

你可以看到完整的代碼here

我想知道爲什麼文本被覆蓋,當我旋轉設備。提前致謝。

+0

你在哪裏聲明瞭你的自定義控件?在onStart()?例如自定義emailText =(CustomClearableEditText)findViewById(R.id.email_address); –

+0

在OnCreate的活動 –

回答

0

使用安卓configChanges在manifest.xml的屬性按以下

<activity 
    android:name="com.RecordActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize|locale|layoutDirection|layoutDirection" 
    android:label="@string/app_name"> 
</activity> 
+0

對不起,我沒有正確描述這個問題。這是文字被覆蓋,而不是切換。那麼它能解決這個問題嗎? –

0

這是因爲當用戶旋轉手機整體Activity被重新啓動。

首先(簡單)的方法是確保您的所有視圖都分配了ID。有時它可以幫助操作系統管理恢復實例。

第二(硬[er])方法是自己保存實例。類似的東西:

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putString("textKey", mEditText.getText().toString()); 
} 

然後在恢復的onCreate狀態()或onRestoreInstanceState():

public void onCreate(Bundle savedInstanceState) { 
    if(savedInstanceState != null) { 
     mEditText.setText(savedInstanceState.getString("textKey")); 
    } 
} 

如果您想了解整個過程中嘗試閱讀this guideHandling Runtime Changes