java.lang.RuntimeException: no se puede crear un controlador dentro del hilo que no haya llamado Looper.prepare ()

Estoy usando un hilo simple para ejecutar httpGet to server cuando se hace clic en un botón, pero obtengo esto después de la ejecución.

Button b_back = (Button) findViewById(R.id.bback);
b_back.setOnClickListener(this);
Button b_sign_up = (Button) findViewById(R.id.signup_button);
b_sign_up.setOnClickListener(this);

@Override
public void onClick(View arg0) 
{
    // TODO Auto-generated method stub
    switch (arg0.getId()) 
    {
        case R.id.bback:
            Intent i = new Intent(this, MainSwitch.class);
            finish();
            startActivity(i);
            break;

            // More buttons go here (if any) ...

        case R.id.signup_button:
            if(username.getText().toString().equalsIgnoreCase("") ||
               password.getText().toString().equalsIgnoreCase("") ||
               email.getText().toString().equalsIgnoreCase(""))
            {
                AlertDialog.Builder dialog = new AlertDialog.Builder(this);
                dialog.setMessage("Please fill in all the gaps!");
                dialog.show();
            }
            else
            {
                //****** Call method that sends the information to server.
                Thread background = new Thread (new Runnable() 
                {
                    public void run()
                    {
                        // Call the time consuming method
                        handler.sendEmptyMessage(0);
                    }
                });
                background.start();
            }
    }
}

private Handler handler = new Handler() 
{
    @Override
    public void handleMessage(Message msg) 
    {
        Toast.makeText(getApplicationContext(),
                       "Done thread",
           Toast.LENGTH_SHORT).show();

    }
};

Respuestas a la pregunta(1)

Su respuesta a la pregunta