提前致谢。
这是我的示例代码。每当我尝试运行它并更改屏幕方向时,编辑文本都会消失,我必须重新启动应用程序。 请帮帮我
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ed1=(EditText)findViewById(R.id.ed1);
ed2=(EditText)findViewById(R.id.ed2);
ed1.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
public void afterTextChanged(Editable arg0) {
ed2.setVisibility(View.INVISIBLE);
}
});
ed2.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
public void afterTextChanged(Editable arg0) {
ed1.setVisibility(View.INVISIBLE);
}
});
}
这是我的main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/table"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="25dip"
android:stretchColumns="0,1" >
<TableRow>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:text="Edit Text 1"
android:textSize="15dip" />
<EditText
android:id="@+id/ed1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="20dip"
android:maxLength="10"
android:numeric="integer|decimal" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/or_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:text="OR"
android:textSize="20dip" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:text="Edit Text2"
android:textSize="15dip" />
<EditText
android:id="@+id/ed2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="20dip"
android:maxLength="10"
android:numeric="integer|decimal" />
</TableRow>
</TableLayout>
答案 0 :(得分:2)
每次旋转设备时,活动都会重新启动,这就是您没有看到EditTexts的原因。
将此行XML添加到您在清单文件中的活动
android:configChanges="orientation|keyboardHidden"
同时检查this以了解有关应用程序运行时更改的更多信息。
答案 1 :(得分:0)
似乎在TextWatchers上调用了void afterTextChanged(Editable)
方法。在任何其他方法中,例如onResume()
也许,您是否以编程方式设置EditTexts的文本?这可能是它的原因。
如果是这种情况,只需在恢复以前状态的位置再次显示它们。
答案 2 :(得分:0)
嗨,尝试将这些行添加到'onCreate'方法的末尾
ed1.setVisibility(View.VISIBLE);
ed2.setVisibility(View.VISIBLE);
更新
试试这个,也许它会对你有帮助。
public class MyActivity extends Activity {
[...]
private final boolean isEd1FirstChange = true;
private final boolean isEd2FirstChange = true;
[...]
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
isEd1FirstChange = true;
isEd2FirstChange = true;
ed1=(EditText)findViewById(R.id.ed1);
ed2=(EditText)findViewById(R.id.ed2);
ed1.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
public void afterTextChanged(Editable arg0) {
if (isEd1FirstChange) {
isEd1FirstChange = false;
return;
}
ed2.setVisibility(View.INVISIBLE);
}
});
ed2.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
public void afterTextChanged(Editable arg0) {
if (isEd2FirstChange) {
isEd2FirstChange = false;
return;
}
ed1.setVisibility(View.INVISIBLE);
}
});
}