2016-12-21 7 views
2

В моем многоязычном приложении я хочу, чтобы новый перезапуск приложения выполнялся из активности запуска. Но я не могу этого сделать. Я изменил манифест приложения, удаливКак уничтожить приложение при изменении локали

локаль

из

андроида: configChanges = "ориентация | keyboardHidden"

но не работает меня. Manifest:

<application 
     android:name=".Global.MyApp" 
     android:allowBackup="true" 
     android:icon="@drawable/login_meter" 
     android:label="@string/app_name" 
     android:largeHeap="true" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
..... 
..... 
<activity 
      android:name=".SplashActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:launchMode="singleTask" 
      android:screenOrientation="portrait" 
      android:theme="@style/SplashTheme" 
      > 
      <intent-filter> 
       .... 

      </intent-filter> 
     </activity> 

.... 
.... 

</application> 
+0

http://stackoverflow.com/questions/8049207/how-to-refresh-activity-after-changing-language-locale-inside -заявление – HsRaja

ответ

1

Существует Intent для Locale изменено действие. Вы должны зарегистрировать BroadcastReceiver, чтобы поймать это намерение и сделать все, что хотите, в методе onReceive().

0

У меня есть обходной путь, но сделать это во всех вас деятельности

/** 
*create BroadcastReciever to listen for local changes 
**/ 
private BroadcastReceiver myReceiver = new BroadcastReceiver() { 

      @Override 
      public void onReceive(Context context, Intent intent) { 
       String locale = Locale.getDefault().getCountry(); 
       finish(); 
      } 
     }; 


/** 
* Register to BroadcastReciever on Resume 
**/ 
@Override 
    protected void onResume() { 

     IntentFilter filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED); 
     registerReceiver(myReceiver, filter); 
     Log.d(TAG,"resume"); 
     super.onResume(); 
    } 

/** 
* unsubscribe from BroadcastReciever onDestroy 
**/ 

@Override 
    protected void onDestroy() { 

     try { 
      unregisterReceiver(myReceiver); 
     } catch(IllegalArgumentException e) { 
      Log.d(TAG,"RECIEVER UNREGISTER ERROR"); 
     } 
     super.onDestroy(); 

    }