Editing TextView outside the UI Thread

Solution 1:

Rule: You cannot manipulate UI elements outside the UI thread.

Here is the proper way to do things:

//Asuming that your activiy is named MainActivity

        new Thread(new Runnable() {
            public void run() {
                try {
                    pos = Calculo.Calcular();
                    //Manipulate your UI elements as following
                    MainActivity.this.runOnUiThread(new Runnable() {
                        public void run() {
                            mostrarFrases(pos);
                        }
                    });
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

Solution 2:

You're not allowed to touch Views on any thread other than the UI thread.

To solve this, try the following:

void mostrarFrases(final int pos){

    runOnUiThread(new Runnable() {
      public void run() {
        Mostrar = (TextView) findViewById(R.id.Texto);
        Mostrar.setText(Frases[pos*2+1], 0, Frases[pos*2+1].length);
     }});
}