[Android] Activity abre sem ser chamada

Oi gente,

É o seguinte:

Eu tenho uma Activity chamada ListarContatos, que pega todos os registros do bd através da classe LerGravarExcluir e manda para a classe ContatosListAdapter, que por sua vez retorna o conteúdo do ListView do layout de ListarContatos.

Quando vc clica no item de menu “buscar”, em ListarContatos, abre-se um dialog para o usuário escrever o nome do contato buscado. Ao clicar no botão “buscar” do dialog, abre-se a activity ListarContatosBuscados, que usa o mesmo layout de ListarContatos (e o mesmo adapter) para listar o(s) contato(s) que coincidem com o que o usuário inseriu no dialog.

Quando eu clico “voltar” em ListarContatosBuscados, finish() é chamado e ListarContatos é aberto, exibindo todos os contatos, MAS, aí é que acontece algo estranho:
quando eu clico “sair” em ListarContatos, abre novamente ListarContatosBuscados, sem eu ter chamado, exibindo parte do que estava exibindo antes.

Alguém sabe como faço para corrigir isso?

Muito obrigada desde já.

package meus.contatos_v2;

import java.util.ArrayList;
import java.util.List;

import meus.contatos_v2.auxiliares.Contato;
import meus.contatos_v2.auxiliares.ContatosListAdapter;
import meus.contatos_v2.auxiliares.LerGravarExcluirScript;

import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;

import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class ListarContatos extends Activity implements OnItemClickListener {
	
	List<Contato> contatos;
	List<Contato> contatos2;
	ListView listViewContatos;
	LerGravarExcluirScript acoesBancoDados;
	Dialog dialog;
	EditText search;
	Contato obj;
	Contato obj2;			
		    
    @Override
    public void onCreate(Bundle savedInstanceState) { 
    	
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listarcontatos);
        
        listViewContatos = (ListView) findViewById(R.id.contatosListView);                                       
        acoesBancoDados = new LerGravarExcluirScript(this);                                         	
        contatos = acoesBancoDados.listarContatos();
        listViewContatos.setAdapter(new ContatosListAdapter(this, contatos)); 
        listViewContatos.setOnItemClickListener(this);
        	                                              
    }
    
    public boolean onCreateOptionsMenu(Menu menu){   	
    	MenuInflater inflater = getMenuInflater();
    	inflater.inflate(R.menu.menu_listar_contatos, menu);
    	return true;    	
    }
    
    public boolean onOptionsItemSelected(MenuItem item){
    	
    	switch(item.getItemId()){
    	
    	case R.id.novo_contato:
    		Intent novo = new Intent (this, IncluirContato.class);
    		startActivity(novo);
    		finish();
    		return true;
    		
    	case R.id.buscar_contato:
    		//set up dialog
	        dialog = new Dialog(this);
	        dialog.setContentView(R.layout.buscar_dialog_layout);
	        dialog.setTitle("Buscar contato");
	        dialog.setCancelable(true);
			
	        //Widgets que estão dentro de alert_dialog_layout.xml
	        search = (EditText) dialog.findViewById(R.id.search); 
	        
	        Button buttonBuscar = (Button) dialog.findViewById(R.id.buscarBtn);
	        buttonBuscar.setOnClickListener(new BotaoBuscar());
			
	        Button buttonCancelar = (Button) dialog.findViewById(R.id.cancelarBtn);
	        buttonCancelar.setOnClickListener(new BotaoCancelar());
	        				
			dialog.show();
    		return true;    		    	
    		
    	case R.id.sair:
    		finish();    		
    		return true;
    		
    	default:   		
    		return false;
    	}
    }
    
    protected class BotaoCancelar implements OnClickListener {

		public void onClick(View v) {
			dialog.dismiss();			
		}
		
	}
	
	protected class BotaoBuscar implements OnClickListener {

		public void onClick(View v) {			
			dialog.dismiss();
			
			String nomeDesejado = search.getText().toString().toUpperCase();				
			int numeroLetras = nomeDesejado.length();
			CharSequence cS = nomeDesejado.subSequence(0, numeroLetras);						
	        
			int numeroContatos = contatos.size();								
			contatos2 = new ArrayList<Contato>();
			
			for(int i = 0; i < numeroContatos; i++) {
				obj = new Contato();
				obj = contatos.get(i);
				String s = obj.getNome().toUpperCase();
				Boolean contem = s.contains(cS);					
				if(contem){
					contatos2.add(obj);
				}					
			}
			
			renovarListView (contatos2);
		}
		
	}
	
	//Esse método chama esta mesma classe, mas com extras no Intent
	public void renovarListView (List<Contato> lista) {
		int numeroContatos = contatos2.size();
		
		if(numeroContatos > 0) {
			
			Intent it = new Intent (this, ListarContatosBuscados.class);
			
			for(int i = 0; i < numeroContatos; i++) {
				obj2 = new Contato();
				obj2 = contatos2.get(i);
				
				Long id = obj2.getId();
				String nome = obj2.getNome();
				String email = obj2.getEmail();		
				String fone = obj2.getFone();
				String endereco = obj2.getEndereco();
				String cidade = obj2.getCidade();		
				String pais = obj2.getPais();
				String imagem = obj2.getImagem();
				int numObj = numeroContatos;
				
				it.putExtra("id" + i, id);
				it.putExtra("nome" + i, nome);
				it.putExtra("email" + i, email);		
				it.putExtra("fone" + i, fone);	
				it.putExtra("endereço" + i, endereco);
				it.putExtra("cidade" + i, cidade);		
				it.putExtra("país" + i, pais);		
				it.putExtra("imagem" + i, imagem);
				it.putExtra("numObj", numObj);
								
				startActivity(it);
				finish();
				
			}
			
		}else{
			Toast.makeText(ListarContatos.this, "Contato inexistente.", Toast.LENGTH_LONG).show();
		}
	}
				                                     
	public void onItemClick(AdapterView<?> parent, View view, int posicao, long identification) {
		
		Contato cont = (Contato) listViewContatos.getAdapter().getItem(posicao);
				
		String nome = cont.getNome();
		String email = cont.getEmail();		
		String fone = cont.getFone();
		String endereco = cont.getEndereco();
		String cidade = cont.getCidade();		
		String pais = cont.getPais();
		String imagem = cont.getImagem();
		int indice = posicao;
		
		Intent it = new Intent (this, DetalhesContato.class);		
		it.putExtra("nome", nome);
		it.putExtra("email", email);		
		it.putExtra("fone", fone);	
		it.putExtra("endereço", endereco);
		it.putExtra("cidade", cidade);		
		it.putExtra("país", pais);		
		it.putExtra("imagem", imagem);
		it.putExtra("indice", indice);
		
		startActivity(it);
		finish();
		
	}
	
	protected void onDestroy() {
		//Fecha o Banco de Dados
		acoesBancoDados.fechar();
		super.onDestroy();		
	}
				    
}
package meus.contatos_v2;

import java.util.ArrayList;
import java.util.List;

import meus.contatos_v2.auxiliares.Contato;
import meus.contatos_v2.auxiliares.ContatosListAdapter;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class ListarContatosBuscados extends Activity implements OnItemClickListener {
	
	List<Contato> contatos;	
	ListView listViewContatos;			
	Contato obj;
	
	
	@Override
    public void onCreate(Bundle savedInstanceState) { 
    	
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listarcontatos);
        
        listViewContatos = (ListView) findViewById(R.id.contatosListView);
                                                                        
        Intent intento = getIntent();
        int numeroContatos = intento.getIntExtra("numObj", 0);                
        	
        contatos = new ArrayList<Contato>();
        	        	        	
        for(int i = 0; i < numeroContatos; i++) {
        	obj = new Contato();
				       		
        	obj.setId(intento.getLongExtra("id" + i, 0));
        	obj.setNome(intento.getStringExtra("nome" + i));
        	obj.setEmail(intento.getStringExtra("email" + i));		
        	obj.setFone(intento.getStringExtra("fone" + i));
        	obj.setEndereco(intento.getStringExtra("endereço" + i));
        	obj.setCidade(intento.getStringExtra("cidade" + i));
        	obj.setPais(intento.getStringExtra("país" + i));
        	obj.setImagem(intento.getStringExtra("imagem" + i));
        		
        	contatos.add(obj);
        }
        	
        listViewContatos.setAdapter(new ContatosListAdapter(this, contatos)); 
        listViewContatos.setOnItemClickListener(this);        	                	        	        	        
                                       
    }
	
	public boolean onCreateOptionsMenu(Menu menu){   	
    	MenuInflater inflater = getMenuInflater();
    	inflater.inflate(R.menu.menu_listar_contatos_buscados, menu);
    	return true;    	
    }
	
	public boolean onOptionsItemSelected(MenuItem item){
    	
    	switch(item.getItemId()){
    	
    	case R.id.novo_contato2:
    		Intent novo = new Intent (this, IncluirContato.class);
    		startActivity(novo);
    		finish();
    		return true;
    		    	    		
    	case R.id.voltar4:
    		Intent voltar = new Intent (this, ListarContatos.class);
    		startActivity(voltar);
    		finish();    		
    		return true;
    		
    	case R.id.sair2:
    		finish();    		
    		return true;
    		
    	default:   		
    		return false;
    	}
    }
	
	public void onItemClick(AdapterView<?> parent, View view, int posicao, long identification) {
		
		Contato cont = (Contato) listViewContatos.getAdapter().getItem(posicao);
				
		String nome = cont.getNome();
		String email = cont.getEmail();		
		String fone = cont.getFone();
		String endereco = cont.getEndereco();
		String cidade = cont.getCidade();		
		String pais = cont.getPais();
		String imagem = cont.getImagem();
		int indice = posicao;
		
		Intent it = new Intent (this, DetalhesContato.class);		
		it.putExtra("nome", nome);
		it.putExtra("email", email);		
		it.putExtra("fone", fone);	
		it.putExtra("endereço", endereco);
		it.putExtra("cidade", cidade);		
		it.putExtra("país", pais);		
		it.putExtra("imagem", imagem);
		it.putExtra("indice", indice);
		
		startActivity(it);
		finish();
		
	}

}

Olá,

Retira de dentro do loop for as linhas: startActivity(it) e finish(), no metodo renovarListView.

Fora isso, faça uma revisão do fluxo das Activities da sua aplicação.
Pelo que eu entendi você começa com ListarContatos, e depois você ao invés de voltar para ela, você starta-a em outra activity.

Espero que ajude.

Olá A H Gusukuma, obrigada por responder =]

[Resolvido]