软键盘、编辑文本和方向更改
Softkeyboard, Edit text and the Orientation change
首先,我正在处理代码中的方向更改,我需要该应用程序仅通过 onCreate()
一次,因此在 onConfigurationChanged
中,我会在必要时手动执行初始化。
关于问题:
当我点击 EditText 激活 SoftKeyboard,并在我以新方向写东西后更改方向并提交(确定或只是后退按钮)文本不会出现在 EditText 中,原来的文本 方向改变后!
我可以在 configchange 之前保存来自 EditText
的文本,然后继续它,但是如果我在更改方向后继续在同一个软键盘上键入,符号将不会显示,我可以键入但没有任何内容出现在屏幕上,即 EditText
.
我认为这是因为 SoftKeyboard 在改变方向时失去了它自己和原始 EditText 之间的 link,因为我在 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" />
我真的需要解决这个问题,也许我做了一些愚蠢的事情或者是一些众所周知的错误,无论如何,我需要你的帮助!
更新
真的没人帮我吗?(
已使用 Fragment
class 解决了问题 here。
首先,我正在处理代码中的方向更改,我需要该应用程序仅通过 onCreate()
一次,因此在 onConfigurationChanged
中,我会在必要时手动执行初始化。
关于问题:
当我点击 EditText 激活 SoftKeyboard,并在我以新方向写东西后更改方向并提交(确定或只是后退按钮)文本不会出现在 EditText 中,原来的文本 方向改变后!
我可以在 configchange 之前保存来自 EditText
的文本,然后继续它,但是如果我在更改方向后继续在同一个软键盘上键入,符号将不会显示,我可以键入但没有任何内容出现在屏幕上,即 EditText
.
我认为这是因为 SoftKeyboard 在改变方向时失去了它自己和原始 EditText 之间的 link,因为我在 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" />
我真的需要解决这个问题,也许我做了一些愚蠢的事情或者是一些众所周知的错误,无论如何,我需要你的帮助!
更新 真的没人帮我吗?(
已使用 Fragment
class 解决了问题 here。