Problema ao retornar String com o medodo startActivityForResult

Bom, para fim de exercício criei uma classe (Exercicio1.class) que envia o nome de um usuario qualquer para uma outra classe (Tela2.class) que deveria retornar o sobrenome, no entanto a variavel sobrenomeConvertido chega ao metodo onClick (da classe tela2.class)vazia.

Exercicio 1

package com.example.livroandroidcap5;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Exercicio1 extends Activity implements OnClickListener {
	
	private static final int CODIGO=1;
	
	@Override
	
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.exercicio1);
		Button button=(Button) findViewById(R.id.botaoNome);
		button.setOnClickListener(this);
	}
	
	public void onClick(View v){
		Intent intent=new Intent(this,Tela2.class);
		final EditText nomeResultado=(EditText) findViewById(R.id.campoNome);
		String nome=nomeResultado.getText().toString();
		intent.putExtra("nomeUsuario",nome);
		startActivityForResult(intent,CODIGO);
	}
	
	protected void onActivityResult(int codigo,int resultado, Intent intent){
		if(intent==null){
			Toast.makeText(this,"Nenhuma informão foi informada", Toast.LENGTH_SHORT).show();
			return;
		}
        String nome=intent.getStringExtra("opcao");
		Toast.makeText(this,"O sobrenome informado é "+nome, Toast.LENGTH_SHORT).show();
	}
}

Tela2

package com.example.livroandroidcap5;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Tela2 extends Activity implements OnClickListener {
	private String sobrenomeConvertido;
	@Override
	public void onCreate(Bundle icicle){
		super.onCreate(icicle);
		setContentView(R.layout.exercicio1_tela2);
		final TextView nomeResultado=(TextView) findViewById(R.id.tela2NomeRecebido);
		Intent intent=getIntent();
		if(intent!=null){
			String nomeRecebido=intent.getStringExtra("nomeUsuario");
			if(nomeRecebido!=null){
				nomeResultado.setText("Ola "+nomeRecebido+" informe seu sobrenome");
			}
		}
		final EditText sobrenome2=(EditText) findViewById(R.id.sobrenome);
		sobrenomeConvertido=sobrenome2.getText().toString();
		final Button botao=(Button) findViewById(R.id.tela2BotaoOK);
		botao.setOnClickListener(this);
	}
	
	public void onClick(View v){
		Intent it=new Intent();
		if (sobrenomeConvertido!=null){
		    it.putExtra("opcao",sobrenomeConvertido);
		    setResult(1,it);
		}
		finish();
	}
}

pq o codigo passa pelo

e não tem nada escrito na EditText, ja que é passado nesse trecho de código até antes de aparecer algo na tela.

Você tem que pegar o que esta escrito na EditText ao disparar um evento ( no caso, um onClick).

[code]package com.example.livroandroidcap5;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Tela2 extends Activity implements OnClickListener {
private String sobrenomeConvertido;
private EditText sobrenome2;

@Override
public void onCreate(Bundle icicle){
	super.onCreate(icicle);
	setContentView(R.layout.exercicio1_tela2);
	final TextView nomeResultado=(TextView) findViewById(R.id.tela2NomeRecebido);
	Intent intent=getIntent();
	if(intent!=null){
		String nomeRecebido=intent.getStringExtra("nomeUsuario");
		if(nomeRecebido!=null){
			nomeResultado.setText("Ola "+nomeRecebido+" informe seu sobrenome");
		}
	}
	sobrenome2=(EditText) findViewById(R.id.sobrenome);
	final Button botao=(Button) findViewById(R.id.tela2BotaoOK);
	botao.setOnClickListener(this);
}

public void onClick(View v){
            if(sobrenome2 != null){
            sobrenomeConvertido=sobrenome2.getText().toString();
            }
	Intent it=new Intent();
	if (sobrenomeConvertido!=null){
	    it.putExtra("opcao",sobrenomeConvertido);
	    setResult(1,it);
	}
	finish();
}

}
[/code]