Заранее спасибо.
Это мой пример кода. Всякий раз, когда я пытаюсь запустить его и изменять ориентацию экрана, текст редактирования исчезает, и я должен перезапустить приложение. пожалуйста, помогите мне
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>
Каждый раз, когда вы поворачиваете свое устройство, ваша активность перезапускается, поэтому вы не видите свои EditTexts.
Добавьте эту строку XML в свою активность в файле манифеста
android:configChanges="orientation|keyboardHidden"
Также проверьте это, чтобы узнать больше о изменениях времени выполнения для ваших приложений.
кажется, что на void afterTextChanged(Editable)
метод void afterTextChanged(Editable)
. В любом другом методе, например onResume()
возможно, вы программным образом устанавливаете текст своих EditTexts? Это может быть причиной этого. Если это так, просто сделайте их видимыми снова в том месте, где вы восстановите свое предыдущее состояние.
Привет, попробуйте добавить эти строки в конец метода 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);
}
});
}