2017-01-17 7 views
0

, когда мое приложение разбивается по какой-либо причине или принудительно закрывается, я нажимаю OK button в сообщении говорит «unfortunately the app has been stopped». то мое приложение вернуться снова к той же activity, но получить его в другом наборе языка и вызвать OnResume()сменить язык программно не работает после приложения силы закрыть

мой вопрос, как сделать мое приложение вернуться к той же Language config даже когда мое приложение было разбитый по какой-то причине.

Я пытаюсь обновить и получить последний конфиг был установлен в sharedPreferences и обновить мою конфигурацию или вид контента, но не повезло

Код:

@Override 
public void onResume(){ 
    super.onResume(); 

    if(appSharedPrefs.getBoolean("IsArabic",true)){ 
     Log.d("ERRRRR", "AR"); // that is called 
     setLocale(getApplicationContext(), "ar"); 
    } 
    else{ 
     Log.d("ERRRRR", "EN"); 
     setLocale(getApplicationContext(), "en"); 
    } 
} 

protected void setLocale(final Context ctx, final String lang) 
{ 
    Log.d("ERRRRR", lang); 

    /* final Locale loc = new Locale(lang); 
    Locale.setDefault(loc); 
    final Configuration cfg = new Configuration(); 
    cfg.setLocale(loc); 
    ctx.getResources().updateConfiguration(cfg, null);*/ 




    Resources res = ctx.getResources(); 
    // Change locale settings in the app. 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    android.content.res.Configuration conf = res.getConfiguration(); 
    conf.locale = new Locale(lang.toLowerCase()); 
    res.updateConfiguration(conf, dm); 
} 


@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    Log.d("ERRRRR", "onConfigurationChanged"); 
    super.onConfigurationChanged(newConfig); 
} 

ответ

0

попробовать это:

вас может поймать событие аварии и загрузить ваш activity с вашими locale и configuration ...

использование этой утилиты класс:

public class ExceptionHandler implements 
     Thread.UncaughtExceptionHandler { 
    private final Activity myContext; 


    public ExceptionHandler(Activity context) { 
     myContext = context; 
    } 

    public void uncaughtException(Thread thread, Throwable exception) { 

     //you can show a dialog here telling that something went wrong 
     Intent intent = new Intent(myContext, your_activity.class); //start your activity 
     //put your locale you can use shared preference also 
     intent.putExtra("locale", "ar"); 
     myContext.startActivity(intent); 

     android.os.Process.killProcess(android.os.Process.myPid()); 
     System.exit(10); 
    } 
} 

Теперь использовать его в вашем MainactivityonCreate как

Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this)); 
+0

моя проблема не в SharedPreferences, это работает для меня, но после получения правильного Ланг, раскладка по-прежнему работает в другом Lang после того, как мое приложение разбилось –

+0

после того, как приложение получило сбой ... общие настройки теряют его значение, поэтому ваш 'appSharedPrefs.getBoolean' дает вам неправильное значение – rafsanahmad007

+0

см. это: http://stackoverflow.com/questions/15353900/shared -preferences-reset-data-when-app-is-force-closed-or-device-is-restarted – rafsanahmad007