Edittext исчезает, когда я меняю ориентацию экрана?

1

Заранее спасибо.

Это мой пример кода. Всякий раз, когда я пытаюсь запустить его и изменять ориентацию экрана, текст редактирования исчезает, и я должен перезапустить приложение. пожалуйста, помогите мне

 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
    показать макет файла main.xml
  • 0
    Я добавил это, пожалуйста, проверьте это.
Показать ещё 3 комментария
Теги:
android-edittext
orientation

3 ответа

2
Лучший ответ

Каждый раз, когда вы поворачиваете свое устройство, ваша активность перезапускается, поэтому вы не видите свои EditTexts.

Добавьте эту строку XML в свою активность в файле манифеста

android:configChanges="orientation|keyboardHidden"

Также проверьте это, чтобы узнать больше о изменениях времени выполнения для ваших приложений.

  • 0
    Это отлично работает. Спасибо
  • 0
    Добро пожаловать...
0

кажется, что на void afterTextChanged(Editable) метод void afterTextChanged(Editable). В любом другом методе, например onResume() возможно, вы программным образом устанавливаете текст своих EditTexts? Это может быть причиной этого. Если это так, просто сделайте их видимыми снова в том месте, где вы восстановите свое предыдущее состояние.

  • 0
    Я попробовал ваш ответ, но текст редактирования все еще исчезает. Я использовал settext для них, чтобы очистить их значения, но все еще не увенчался успехом, пока изменилась ориентация.
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);
            }
        });

}

  • 0
    Нет, все еще оба текста редактирования исчезают.
  • 0
    посмотри мое обновление
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню