2016-07-07 113 views
0

我想創建一個BroadcastReceiver來監聽語言環境的變化,但我總是有java ClassNotFoundException。如何在Xamarin中爲Locale創建BroadcastReceiver?

這是我的區域設置廣播接收器:

namespace AppDemia.Droid.Receivers 
{ 
    [BroadcastReceiver(Enabled = true)] 
    [IntentFilter(new[] { Intent.ActionLocaleChanged })] 
    public class LocaleChangeReceiver : BroadcastReceiver 
    { 
     public override void OnReceive(Context context, Intent intent) 
     { 
      Mensagens.LanguageSystem = Locale.Default.Language; // Esse método pega a string simples (exemplo: "pt" ou "en" 
      //Mensagens.languageSystem = Locale.Default.ToString(); // Esse aqui pega a string completa (exemplo: "pt_BR" ou "en_US") 
      Mensagens.CultureSystem = System.Globalization.CultureInfo.CurrentUICulture.ToString(); // Aqui pegamos a string completa mas sem ser padrão android (exemplo: "pt-BR" ou "en-US", note o hifen) 
      CultureInfo cultureSystem = new CultureInfo(System.Globalization.CultureInfo.CurrentUICulture.ToString()); 
      Mensagens.DateFormatSystem = cultureSystem.DateTimeFormat.ShortDatePattern; 
     } 
    } 
} 

這是我的清單:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="4" android:versionName="1.1.1" android:installLocation="auto" package="com.prosperi.appdemia"> 
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" /> 
    <application android:label="Appdemia" android:theme="@style/Appdemia" android:icon="@drawable/LogoAppdemia"> 
     <!-- Other things --> 

     <receiver android:name="com.prosperi.appdemia.receivers.LocaleChangeReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.LOCALE_CHANGED"></action>  
      </intent-filter> 
     </receiver> 
    </application> 

    <!--other things --> 
</manifest> 

始終是我改變區域設置在設備設置中,與我的應用程序打開,我有這樣的例外:無法實例化接收器com.prosperi.appdemia.receivers.LocaleChangeReceiver:java.lang.ClassNotFoundException:未找到類「com.prosperi.appdemia.receivers.LocaleChangeReceiver」

任何人都可以幫助我嗎?

回答

1

您不需要手動將接收器添加到您的AndroidManifest.xml中。只要將[BroadcastReceiver]屬性添加到班級中,它就會自動完成。

+0

謝謝。這是有效的 –

相關問題