2016-12-21 82 views
2

在我的多语言应用程序中,我想从启动程序活动重新启动我的应用程序。但我无法这样做。我已经通过移除如何销毁应用程序的区域设置更改

区域

的Android改变了应用程序清单: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 变化的行动。 你应该注册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(); 

    } 
相关问题