[Resolvido]Habilitar botão somente depois de todos os campos estiverem preenchidos

Estou montando um formulario e quero permitir que continue se todos os campos estiverem preenchidos.

O que tentei fazer foi desabilitar o btnCalcular e só habilitar ele se todos os campos estiverem preenchidos, o jeito que conheço para verificar é usando TextWatcher, mas ele só funciona para um campo, tentei fazer setando um boolean em cada campo, mas não deu certo. Alguem conhece alguma outra forma para verificar ou consegue ver onde estou errando?

package br.com.compara;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

	private EditText etPrecoProduto1;
	private EditText etPrecoProduto2;
	private EditText etQuantidadeProduto1;
	private EditText etQuantidadeProduto2;
	private EditText etResultadoProduto1;
	private EditText etResultadoProduto2;
	
	float precoRealProduto1 = 0;
	float precoRealProduto2 = 0;
	float precoProduto1 = 0;
	float precoProduto2 = 0;
	float quantidadeProduto1 = 0;
	float quantidadeProduto2 = 0;
	
	boolean blnPreco1 = false;
	boolean blnPreco2 = false;
	boolean blnQtd1 = false;
	boolean blnQtd2 = false;

	private Button btnCalcular;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.itens);
		


		etPrecoProduto1 = (EditText) findViewById(R.id.etPrecoProduto1);
		etPrecoProduto2 = (EditText) findViewById(R.id.etPrecoProduto2);
		etQuantidadeProduto1 = (EditText) findViewById(R.id.etQuantidadeProduto1);
		etQuantidadeProduto2 = (EditText) findViewById(R.id.etQuantidadeProduto2);
		etResultadoProduto1 = (EditText) findViewById(R.id.etResultadoProduto1);
		etResultadoProduto2 = (EditText) findViewById(R.id.etResultadoProduto2);

		btnCalcular = (Button) findViewById(R.id.btnCalcular);
		
		btnCalcular.setEnabled(false);
		
		etPrecoProduto1.addTextChangedListener(precoProduto1Watcher);
		etPrecoProduto2.addTextChangedListener(precoProduto2Watcher);
		etQuantidadeProduto1.addTextChangedListener(QuantidadeProduto1Watcher);
		etQuantidadeProduto2.addTextChangedListener(QuantidadeProduto2Watcher);
		
		if(blnPreco1 == true && blnPreco2 == true && blnQtd1 == true && blnQtd2 == true ){
			btnCalcular.setEnabled(true);
		}
		
		btnCalcular.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				
					precoProduto1 = Float.parseFloat(etPrecoProduto1
							.getText().toString());
					precoProduto2 = Float.parseFloat(etPrecoProduto2
							.getText().toString());
					quantidadeProduto1 = Float
							.parseFloat(etQuantidadeProduto1.getText().toString());
					quantidadeProduto2 = Float
							.parseFloat(etQuantidadeProduto2.getText().toString());

				precoRealProduto1 = precoProduto1 / quantidadeProduto1;
						
				etResultadoProduto1.setText(String.format("%.02f",
								precoRealProduto1));						
				precoRealProduto2 = precoProduto2 / quantidadeProduto2;
				etResultadoProduto2.setText(String.format("%.02f",
								precoRealProduto2));

			}
		});

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}
	
	private TextWatcher precoProduto1Watcher = new TextWatcher(){

		@Override
		public void afterTextChanged(Editable s) {
			// TODO Auto-generated method stub
			blnPreco1 = true;
		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			// TODO Auto-generated method stub
			
		}
		
	};
	private TextWatcher precoProduto2Watcher = new TextWatcher(){

		@Override
		public void afterTextChanged(Editable s) {
			// TODO Auto-generated method stub
			blnPreco2 = true;
		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			// TODO Auto-generated method stub
			
		}
		
	};
	private TextWatcher QuantidadeProduto1Watcher = new TextWatcher(){

		@Override
		public void afterTextChanged(Editable s) {
			// TODO Auto-generated method stub
			blnQtd1 = true;
		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			// TODO Auto-generated method stub
			
		}
		
	};
	private TextWatcher QuantidadeProduto2Watcher = new TextWatcher(){

		@Override
		public void afterTextChanged(Editable s) {
			// TODO Auto-generated method stub
			blnQtd2 = true;
		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			// TODO Auto-generated method stub
			
		}
		
	};
}

Não precisa desabilitar o seu Button, basta criar um método que valide se os seus campos estão null ou vazios (dependendo do tipo do seu campo).
Chame este método no seu action do seu button, se todos os campos tiverem ok ele submita.

Nesse caso como faço para verificar se os campos estão preenchidos? Dai colocaria o método dentro do setOnClickListener(), é isso?

Faça um if validando todos os seus campos, voce também pode mostrar um modal para alertar o usuario, e sim chame este método dentro do setOnClickListener().

Valeu, agora consegui fazer, até tinha tentado fazer algo do tipo, mas estava fazendo no lugar errado