软键盘,编辑文本和方向更改

时间:2015-08-19 21:09:13

标签: android android-edittext android-softkeyboard orientation-changes

首先,我正在处理来自代码的方向更改,我需要该应用仅通过onCreate()一次,因此在onConfigurationChanged我会在必要时手动执行初始化。

关于问题:

当我点击EditText时激活SoftKeyboard,并在我以新方向写入内容后更改方向并提交(ok或只是后退按钮)文本不会出现在EditText中,即写入的文本方向改变之后!

我可以在configchange之前保存文本EditText然后恢复它,但是如果我在更改方向后继续键入相同的软键盘,符号将不会显示,我可以输入但是没有任何内容出现屏幕即EditText

我认为这是因为SoftKeyboard在更改方向时丢失了自身与原始EditText之间的链接,因为我在configchange之后重新初始化布局和EditText,但对SoftKeyboard没有任何说法,事实上,我甚至没有知道这是否可行。我不知道如何让它发挥作用,也许有人有这样的问题。

P.S。请不要让我使用TextWatchers - 它们不是一个选项。

UPD

我上传了显示问题的视频。 https://youtu.be/eoEBjooYNAU

以下是该应用的代码:

清单

<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name" >

MainActivity

public class MainActivity extends AppCompatActivity {
EditText txtMain;
private void Init() {
setContentView(R.layout.activity_main);
txtMain = (EditText) findViewById(R.id.txtMain);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Init();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
String txtMainText = txtMain.getText().toString(); //SAVING THE STATE
Init(); //RELOADING RESOURCES AND VARS REFRESHING ACCORDING TO THE NEW LAYOUT
txtMain.setText(txtMainText); //RESTORING THE STATE
}
}

的EditText

<EditText
android:layout_width="fill_parent"
android:layout_height="100dp"
android:id="@+id/txtMain"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true" />

我真的需要解决问题,也许我做了一些愚蠢的事情,或者是一些众所周知的错误,无论如何,我需要你的帮助!

UPD 真的没有人帮我吗?(

1 个答案:

答案 0 :(得分:0)

使用Fragment类解决了问题,正如here所述。