[英]Refresh Activity from ViewPager Fragment
我有一個BaseActivity
,其中有一個ViewPager
,其中包含一些Fragments
。 在這些Fragments
之一中,我有2個按鈕可以更改應用程序的語言。 我要完成的事情是,單擊按鈕后,將BaseActivity
刷新為所選的語言,但仍在Settings(片段名稱)上設置了ViewPager。 現在,它正在重新加載整個應用程序,並從我將其設置為開始的片段開始。
用於更改語言和刷新活動的代碼
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
SharedPreferences ensharedPreferences = getActivity().getSharedPreferences("selectedLanguage", MODE_PRIVATE);
SharedPreferences.Editor eneditor = ensharedPreferences.edit();
eneditor.putString("language", lang);
eneditor.apply();
SharedPreferences pref = getActivity().getSharedPreferences(lang,MODE_PRIVATE);
Intent refresh = new Intent(getContext(), BaseActivity.class);
getActivity().overridePendingTransition(0,0);
startActivity(refresh);
getActivity().overridePendingTransition(0,0);
}
我只發現了相反的方法,可以從活動中重新加載片段,但是我想用另一種方法。
您可以使用getCurrentItem()將ViewPager的選定位置傳遞給Activity,並將其作為附加傳遞給新的Intent,並通過getIntent()重新啟動Activity時重新選擇商品編號,並使用setCurrentItem(int位置 )移至先前選擇的Fragment )
// Restarting the Activity passing the position of the currently selected Fragment
Intent intent = new Intent(getContext(), BaseActivity.class);
intent.putExtra(EXTRA_POSITION, viewPager.getCurrentItem());
startActivity(intent);
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Intent intent = getIntent();
if(intent != null) {
int position = intent.getIntExtra(EXTRA_POSITION, 0);
viewPager.setCurrentItem(position);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.