2014-11-06 154 views
0

我正在构建一个应用程序,用户可以在应用程序启动时选择想要设置的语言。弹出窗口将显示“选择您的语言”,其中一个用于阿拉伯语,另一个用于英语。从Alert for Android设置语言(XAMARIN Studio)

的问题是,当我改变了语言环境和执行这条线

SetContentView (Resource.Layout.Main); 

的应用打破了。没有错误或任何异常,但所有控件都停止捕获事件。我尝试使用this和this.Class声明一个Intent,当我调用StartActivity时,它就像重新启动整个应用程序一样,然后弹出窗口再次选择语言。我是新来的Android开发为我花了我近两年来在SAP ABAP工作,所以我可能会问一个愚蠢的问题:d

这里是我的代码

using System; 

using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 

namespace Khums 
{ 
    [Activity (Label = "Khums", MainLauncher = true, Icon = "@drawable/icon")] 
    public class MainActivity : Activity 
    { 

     protected override void OnCreate (Bundle bundle) 
     { 
      base.OnCreate (bundle); 

      // Set our view from the "main" layout resource 
      int r = Resource.Layout.Main; 
      SetContentView (Resource.Layout.Main); 

      var languageIso = "ar-SA"; 

      AlertDialog.Builder alert = new AlertDialog.Builder (this); 
      //alert.SetTitle ("Selected Language"); 

      AlertDialog alertDiaog = alert.Create(); 
      alertDiaog.SetTitle ("Select Language:"); 

      alertDiaog.SetButton ("العربية", (s, EventArgs) => { 

       languageIso = "ar-SA"; 
       var locale = new Java.Util.Locale(languageIso); 
       Java.Util.Locale.Default = locale; 
       var config = new Android.Content.Res.Configuration{Locale = locale }; 
       BaseContext.Resources.UpdateConfiguration(config, BaseContext.Resources.DisplayMetrics); 
       //base.SetContentView(r); 
       //Intent intent = new Intent(this, this.Class); 
       //StartActivity(intent); 

       SetContentView (Resource.Layout.Main); 
      }); 

      alertDiaog.SetButton2 ("English", (s, EventArgs) => { 

       languageIso = "en-US"; 
       var locale = new Java.Util.Locale(languageIso); 
       Java.Util.Locale.Default = locale; 
       var config = new Android.Content.Res.Configuration{Locale = locale }; 
       BaseContext.Resources.UpdateConfiguration(config, BaseContext.Resources.DisplayMetrics); 
       SetContentView (Resource.Layout.Main); 
      }); 


      alertDiaog.Show(); 

      Button button = FindViewById<Button> (Resource.Id.myButton); 

      RadioButton rb_FirstTime = FindViewById<RadioButton> (Resource.Id.radioButton1); 
      RadioButton rb_Regular = FindViewById<RadioButton> (Resource.Id.radioButton2); 

      EditText ti_lyearBalance = FindViewById<EditText> (Resource.Id.ti_lastBalance); 
      EditText ti_Balance = FindViewById<EditText> (Resource.Id.ti_Balance); 
      EditText ti_Clothes = FindViewById<EditText> (Resource.Id.ti_Clothes); 
      EditText ti_Food = FindViewById<EditText> (Resource.Id.ti_Food); 
      EditText ti_Perfumes = FindViewById<EditText> (Resource.Id.ti_Perfumes); 
      EditText ti_Subscriptions = FindViewById<EditText> (Resource.Id.ti_Subscriptions); 
      EditText ti_Others = FindViewById<EditText> (Resource.Id.ti_Others); 

      TextView lbl_lyearBalance = FindViewById<TextView> (Resource.Id.lbl_lastBalance); 

      rb_FirstTime.Click += RadioButtonHandler; 
      rb_Regular.Click += RadioButtonHandler; 
      button.Click += MyButtoHandler; 
     } 

     private void RadioButtonHandler(object sender, EventArgs e) 
     { 

     } 

     private void MyButtoHandler(object sender, EventArgs e) 
     { 


     } 

     private double calculateKhumus (double[] amounts, Boolean isRegular) 
     { 


     } 

     private void LangSwitchHndler(Object sender, EventArgs e) 
     { 

     } 


    } 
} 

可以请你告诉我,我什么在这里做错了。我试图使用togglebutton而不是alert和标准按钮,但最终出现同样的问题。谢谢。

回答

0

它试了两天后就解决了。我所做的只是创建一个菜单并将目标框架更改为Android 3.1 Honeycomb。然后我刚开始活动,一切工作正常。

所以这个问题只是目标框架!