Как перерисовать экран в Android - PullRequest
0 голосов
/ 22 ноября 2011

Я хочу знать, как я могу для экрана перерисовать его текущий контент?

На данный момент у меня есть следующее: у меня есть действие, которое проверяет, установлен ли флаг в true или false, если флаг true, ему нужно загрузить один XML-файл в качестве макета, если флаг false он должен загрузить другой. Этот код работает.

У меня проблема в том, что экран сам не перерисовывается, если я не изменяю его ориентацию, иначе я переворачиваю телефон. Мне нужно, чтобы перерисовка произошла в момент изменения состояния флага. У меня это работало с onResume (), но проблема в том, что макет вернулся в состояние по умолчанию и не сохранил какие-либо изменения ввода или кнопки, которые были сделаны, это произошло, когда я переключался с одной вкладки на другую .

Итак, я предполагаю, что я спрашиваю, что-то вроде того, как я могу вносить изменения в файл макета и сохранять их при переключении между вкладками в моем приложении, чтобы при возврате на эту вкладку все изменения все еще там?

1 Ответ

0 голосов
/ 22 ноября 2011

Почему бы вам не выполнить AsyncTask в фоновом режиме, чтобы ваш флаг стал истинным (или ложным идентификатором), а затем на PostExecute вы можете изменить свой пользовательский интерфейс по своему желанию. Переключение между вкладками не должно приводить к изменению вашей активности. Надеюсь, это поможет.

private class WaitMyFlag extends AsyncTask<Void,Void,Void>{
    @Override
protected Void doInBackground(Void... params) {
        while(!youflag){
            try {
                Thread.sleep(100);
            } catch (Exception e){
                Log.e(TAG, "Couldn't sleep !");
            }
        }
    }

    @Override
protected Void onPostExecute(Void params) {
        //UI Modifications
    }
}
...