2016-12-21 6 views
2

私の多言語アプリケーションでは、ランチャーアクティビティからアプリケーションを新規に再起動したいと思います。しかし、私はそうすることができません。私はロケール変更のアプリケーションを破棄する方法

ロケール

アンドロイドから

除去することにより、アプリケーションマニフェストを変更しました:configChanges = "オリエンテーション| keyboardHidden"

をするが、そのために働いていません私。 マニフェスト:

<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 があり、アクションを変更しました。 このインテントをキャッチし、onReceive()メソッドで必要な処理を行うには、BroadcastReceiverを登録する必要があります。

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(); 

    } 
関連する問題