Можно ли обновить вид фрагмента? - PullRequest
21 голосов
/ 27 марта 2012

Я изменил locale моего приложения программно , как показано ниже:

Resources res = context.getResources();

 DisplayMetrics dm = res.getDisplayMetrics();
 android.content.res.Configuration conf = res.getConfiguration();
 conf.locale = new Locale("cn");
 res.updateConfiguration(conf, dm);

После этого я бы хотел обновить моего текущего отображаемого фрагментаview для отображения с новыми настройками локали.

Итак, я сначала получаю текущий фрагмент (это самый последний в backstack):

BackStackEntry latestEntry=fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount()-1);
String str=latestEntry.getName();
Fragment fragment=fragMgr.findFragmentByTag(str);

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

Ответы [ 3 ]

35 голосов
/ 08 мая 2013

Вы можете просто отсоединить и прикрепить фрагмент, как показано ниже

    Fragment currentFragment = getFragmentManager().findFragmentByTag("FRAGMENT");
    FragmentTransaction fragTransaction = getFragmentManager().beginTransaction();
    fragTransaction.detach(currentFragment);
    fragTransaction.attach(currentFragment);
    fragTransaction.commit();

Это обновит вид, и локаль изменится

2 голосов
/ 27 марта 2012

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

0 голосов
/ 15 сентября 2018

Я наконец нашел решение для этого!Просто запустите ваш код обновления представления в потоке пользовательского интерфейса

Пример -

 getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                user_arrayList.add(name);
                adapter.notifyDataSetChanged();
                tv_total_users.setText("Total Users : "+user_arrayList.size());
            }
        });

Наконец-то нашел это решение после попытки в течение почти 4-5 часов!

...