it-swarm.com.ru

Можно ли обновить вид фрагмента?

Я изменил 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);

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

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

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

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

21
Leem.fin

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

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

Это обновит вид, и язык изменится

35
ZeeShaN AbbAs

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

2
Mimminito

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

Пример - 

 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 часов!

0
Mayank Agarwal