gpt4 book ai didi

android - 将英语更改为阿拉伯语时,AlertDialog 中的语言不会更改

转载 作者:行者123 更新时间:2023-12-02 15:40:06 27 4
gpt4 key购买 nike

我正在开发一个应用程序,我必须将应用程序内容从英语更改为阿拉伯语,反之亦然。语言会根据“Activity ”和“fragment ”中的语言选择进行更改,但有时在 AlertDialog 中不会更改。请建议我做错了什么。

以下是详细信息。

显示对话框的类和方法

public class AlertDialogManager {
public static void showAlertDialog(Context ctx, String message) {
if (ctx == null) {
return;
}
showAlertDialog(ctx, message, Gravity.CENTER);
}

public static void showAlertDialog(Context ctx, String message, int gravity) {
try {
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setMessage(message).setPositiveButton("OK",
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated
// method stub
dialog.cancel();
}
});
AlertDialog dialog = builder.show();
TextView messageText = (TextView) dialog
.findViewById(android.R.id.message);
messageText.setGravity(gravity);
} catch (Exception e) {
// TODO: handle exception

}

}
}

调用上述方法的方法

    @Override
public void showAlert(String message) {
if (!TextUtils.isEmpty(message)) {
AlertDialogManager.showAlertDialog(MerchantLoginActivity.this, message);
}
}

每个 Activity 中使用的方法来更改内容的语言

   @Override
protected void attachBaseContext(Context newBase) {
Locale languageType = LanguageUtil.getLanguageType(newBase);
super.attachBaseContext(LocaleContextWrapper.wrap(newBase, languageType));
}

正在更改语言的按钮单击事件 |主要 Activity

@OnClick(R.id.language_button)
void onLanguageClicked(View view) {

// Getting saved language


currentLanguage = LocaleHelper.getLanguage(getBaseContext());
String languageToLoad = (currentLanguage.equals(Language.ARABIC) ? Language.ENGLISH : Language.ARABIC); // your language

Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.setLocale(locale);
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
LocaleHelper.setLocale(getApplicationContext(), languageToLoad);
//LanguageUtil.changeLanguageType(getApplicationContext(), locale);
FlooosyApplication.getInstance().setLanguage(languageToLoad);
this.recreate();
//onRestart();
}

onRestart() |主要 Activity

@Override
protected void onRestart() {
super.onRestart();
if (locale.equals(Language.ARABIC))
locale = Language.ENGLISH;
else
locale = Language.ARABIC;
startActivity(new Intent(this, MainActivity.class));
finish();
}

最佳答案

首次启动应用程序时,您的语言是默认

您总是检查阿拉伯语,而开始总是错误。单击按钮,它将设置为阿拉伯语,第二次单击按钮将设置为英语

onRestart() 包含当前选择的语言。更改为

@Override
protected void onRestart() {
super.onRestart();
if (locale.equals(Language.ARABIC))
locale = Language.ARABIC;
else
locale = Language.ENGLISH;
startActivity(new Intent(this, MainActivity.class));
finish();
}

关于android - 将英语更改为阿拉伯语时,AlertDialog 中的语言不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46516624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com