title: Looper threads issue? But not using Animator
body: <p>I am running a loop to <code>SynthesizeToFile</code> (in this example I will run the loop 10 times)</p>
  
  <pre><code>for(int i = 0; i&lt; 10; i++)
  {
      textToSpeech.SynthesizeToFile("SOME TEXT", null, new Java.IO.File(System.IO.Path.Combine(documentsPath, i.ToString() + "_audio.wav")), i.ToString());
  }
  </code></pre>
  
  <p><strong>TTS Initialising</strong></p>
  
  <pre><code>void TextToSpeech.IOnInitListener.OnInit(OperationResult status)
          {
              try
              {
                  Voice voiceobj = new Voice("en-us-x-sfg#female_2-local", Java.Util.Locale.English, VoiceQuality.VeryHigh, VoiceLatency.VeryHigh, false, null);
                  textToSpeech.SetVoice(voiceobj);
  
  
                  if (status == OperationResult.Error)
                  {
                      textToSpeech.SetLanguage(Java.Util.Locale.Default);
                  }
  
                  if (status == OperationResult.Success)
                  {
                      textToSpeech.SetLanguage(Java.Util.Locale.English);
                      textToSpeech.SetOnUtteranceProgressListener(new UtteranceProgressListener1(this));
                      Log.Info("101029", "Initialised successfully");
                  }
              }
              catch (Exception X)
              {
                  Log.Info("101028", "TTF Error? " + X.Message);
              }
  
          }       
  </code></pre>
  
  <p>I am setting up <code>SetOnUtteranceProgressListener</code> to <code>SetOnUtteranceProgressListener1</code> which is the following </p>
  
  <pre><code>public class UtteranceProgressListener1 : UtteranceProgressListener
          {
              ReadArticle _parent;
              int total = 0;
  
              public UtteranceProgressListener1(ReadArticle p_parent)
              {
                  _parent = p_parent;
              }
  
              public override void OnStart(String utteranceId)
              {
  
              }
  
              public override void OnError(String utteranceId)
              {
                  Log.Info("101029", "OnError called");
              }
  
              public override void OnDone(String utteranceId)
              {
                  Log.Info("101029", "OnDone: " + total.ToString());
                  total++;
                  _parent.AudioConvertionResults(total);
              }
          }
  </code></pre>
  
  <p>Every time when it is <code>OnDone</code> I call a function which basically just checks if it a 10th count, means this is the last file to process and make some controls visible such as following </p>
  
  <pre><code>    public bool AudioConvertionResults(int CompInt)
              {
                  Log.Info("101029", "ComInt: " + CompInt.ToString() );
  
                  if (CompInt &gt;= 10)
                  {
                      try
                      {                  
                          Log.Info("101029", "Triggered at " + CompInt.ToString());
                  FloatingActionButton FAB = FindViewById&lt;FloatingActionButton&gt;(Resource.Id.fab);
                      FAB.Visibility = ViewStates.Visible;
                      }
                      catch(Exception X)
                      {
                          Log.Info("101029", "Error Triggering? "+X.Message);
                      return fasle;
                      }
                  retuen true;
  
                  }
                  else
                  {
                      Log.Info("101029", "DID NOT Trigger at " + 
                  CompInt.ToString());
                  return fasle;
                  }
  
          }
  </code></pre>
  
  <p>The error I get is the following </p>
  
  <blockquote>
    <p>Animators may only be run on Looper threads</p>
  </blockquote>
  
  <p>when it hits the <code>FloatingActionButton FAB = FindViewById&lt;FloatingActionButton&gt;(Resource.Id.fab);</code> </p>
  
  <p>I also tried to make this a global variable but still no luck. </p>
  
  <p>I think I am messing up something bad, any idea what should I do?</p>