2017-01-21 6 views
1

Пожалуйста, обратите внимание, что тот же код работает прекрасно на Android Версии> KitKatAndroid setVisibility (View.VISIBLE) не работает вообще после поворота экрана в KITKAT

У меня есть динамическое представление вопросника. Все представления добавляются в соответствии с вопросом, исходящим из api, который я использую. То, что я пытаюсь сделать, - это вопрос: если задан вопрос, но пользователь не заполнил его и не попытался его отправить, я пытаюсь установить значение «ВИДИМО» на мой текстовый текст с текстом «Обязательный»

Он отлично работает когда я либо в пейзажном, либо в портретном режиме, но сразу после изменения ориентации он перестает работать.

Я отлаживал код и проверял, статус видимости меняется, но пользовательский интерфейс не обновляется.

Это работает отлично, кроме KITKAT

Я попытался view.invalidate(); также.

макет TextView быть установлен как VISIBLE

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/required_prompt_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <com.goodsnitch.lib.ui.LatoRegularTextView 
     android:id="@+id/required_prompt_dynamic" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/field_required_prompt" 
     android:textColor="@android:color/holo_red_light" 
     android:textSize="11dp" 
     android:textStyle="italic" 
     android:visibility="gone" /> 
</LinearLayout> 

Java код, чтобы сделать его видимым

private void showRequiredPrompt(final View view) { 
     final TextView requiredLabel = (TextView) ((LinearLayout) view.getParent()).findViewById(R.id.required_prompt_dynamic); 
     if (requiredLabel != null) { 
      mHandler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        view.clearAnimation(); 
        requiredLabel.clearAnimation(); 
        requiredLabel.setVisibility(View.VISIBLE); 
        view.invalidate(); 
        requiredLabel.invalidate(); 
       } 
      }, 200); 
     } 
    } 

Я ценю вашу помощь :)

Редактирование вопрос объяснить далее

This is code to show the label ON CLICK EVENT This is the toast showing visibility state of the label

Обязательный ярлык должен появиться чуть выше первого флажка в красный цвет

+1

Необходимо сохранить состояние. Взгляните на: [Сохранение состояния активности Android] (http://stackoverflow.com/questions/151777/saving-android-activity-state) –

+0

@Alexandar G: Это не о состоянии, я не пытаюсь восстановить состояние , Я пытаюсь просто показать кнопку «Показать на кнопку отправки» (при необходимости) –

+0

«но сразу после изменения ориентации она перестает работать». Как отметил Александар, вам необходимо сохранить текущее состояние представления. Всякий раз, когда происходят изменения в ротации, активность воссоздается. Попробуйте добавить android: configChanges = «ориентация» в AndroidManifest.xml для этой активности –

ответ

0

использовать onSaveInstanceState() и onRestoreInstanceState(), когда и используют вращение экрана.

Смежные вопросы