1
从片段(设置)中通过按TextView
调用DialogFragment
,在其中更改设置(语言)应用程序,如何关闭DialogFragment
,应用设置而不重新启动整个应用程序?Android在应用程序内切换语言而不重新启动
理想情况下,在SingleChoice
选择对话框上一次更改语言。重启后一切正常。下面是代码DialogFragment
:
public class LanguageDialogFragment extends DialogFragment {
final String[] itemsLang = {"English", "Russian", "Ukraine"};
final String[] items = {"en", "ru", "uk"};
String lang;
MainActivity activity = new MainActivity();
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Выберите свой родной язык")
.setSingleChoiceItems(itemsLang, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
lang = items[item];
}
})
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
App.prefs.saveLanguage(lang);
App.changeLang(lang);
reload();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
return builder.create();
}
private void reload() {
Intent intent = getActivity().getIntent();
getActivity().finish();
Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(App.context.getPackageName());
startActivity(LaunchIntent);
}
}
下面是应用程序的例子,就像我想要实现:https://play.google.com/store/apps/details?id=com.funeasylearn.english
截图从中:
不是一个完美的解决方案,应用类的静态变量和JNI库将不会重新初始化.. – blueware
我不想becasue程序是做这样的记录屏幕一些任务重新启动我的应用程序。所以没有重新启动应用程序是有任何解决方案的Android 7.0 – PriyankaChauhan