"Unfortunately, * my app* has stopped" in passing data to Activity

I am making an app that formats bibliographic references according to ABNT, but there is an error to pass the data entered by the user to the next activity, which displays the formatted data.

Follows the codes and print with the error message.

public class LivroTela extends Activity implements OnClickListener {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.campos_livro);

        setupbotaoGerarLivro(); 
    }

    private void setupbotaoGerarLivro() {
        Button btnGerarLivro = (Button) findViewById(R.id.btnGerarLivro);
        btnGerarLivro.setOnClickListener(new View.OnClickListener() {       
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(LivroTela.this, FormatacaoLivro.class);
                EditText etAutor1= (EditText) findViewById(R.id.etAutor1);
                String autor1 = etAutor1.getText().toString();
                intent.putExtra("etAutor1", autor1);

                EditText etAutor2= (EditText) findViewById(R.id.etAutor2);
                String autor2 = etAutor2.getText().toString();
                intent.putExtra("etAutor2", autor2);

                EditText etAutor3= (EditText) findViewById(R.id.etAutor3);
                String autor3 = etAutor3.getText().toString();
                intent.putExtra("etAutor3", autor3);

                EditText etTitulo1= (EditText) findViewById(R.id.etTitulo1);
                String titulo1 = etTitulo1.getText().toString();
                intent.putExtra("etTitulo1", titulo1);

                EditText etEdicao= (EditText) findViewById(R.id.etEdicao);
                String edicao1 = etEdicao.getText().toString();
                intent.putExtra("etEdicao", edicao1);

                EditText etCidade= (EditText) findViewById(R.id.etCidade);
                String cidade1 = etCidade.getText().toString();
                intent.putExtra("etCidade", cidade1);

                EditText etEditora= (EditText) findViewById(R.id.etEditora);
                String editora = etEditora.getText().toString();
                intent.putExtra("etEditora", editora);

                EditText etAnoLivro= (EditText) findViewById(R.id.etAnoLivro);
                String ano = etAnoLivro.getText().toString();
                intent.putExtra("etAnoLivro", ano);

                startActivity(intent);          
            }           
        });         
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub      
    }   
}

Class FormatacaoLivro:

public class FormatacaoLivro extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.formatacao_livro);

        TextView tvFormatacaoLivro = (TextView) findViewById(R.id.tvFormatacaoLivro);
        Intent intent = getIntent();

        String autor1 = intent.getStringExtra("etAutor1");
        String[] a1= autor1.split(" ");
        String a1pronto = a1[1].toUpperCase()+","+a1[0];

        String autor2 = intent.getStringExtra("etAutor2");
        String[] a2= autor2.split(" ");
        String a2pronto = a2[1].toUpperCase()+","+a2[0];

        String autor3 = intent.getStringExtra("etAutor3");
        String[] a3= autor3.split(" ");
        String a3pronto = a3[1].toUpperCase()+"."+a3[0];

        String titulo1 = intent.getStringExtra("etTitulo1");
        String edicao1 = intent.getStringExtra("etEdicao");
        String cidade1 = intent.getStringExtra("etCidade");
        String editora = intent.getStringExtra("etEditora");
        String ano = intent.getStringExtra("etAnoLivro");

        String ref = a1pronto+";"+a2pronto+";"+a3pronto+","+titulo1+","+edicao1+","+cidade1+","+editora+","+ano;
        /*Log.i("aula", ref);*/
        tvFormatacaoLivro.setText(ref); 
    }
}

Error Image: http://imgur.com/0oap5rJ

Author: rsicarelli, 2016-02-01

1 answers

Seems to me a problem with some of your accesses to index 1, as in

    String autor1 = intent.getStringExtra("etAutor1");
    String[] a1= autor1.split(" ");
    String a1pronto = a1[1].toUpperCase()+","+a1[0];

Since your error is:

02-01 12:02:51.219: E/AndroidRuntime(2103): java.lang.RuntimeException: Unable to start activity ComponentInfo{si.uemg.appformatadorabnt/si.uemg.appformatadorabnt.FormatacaoLivro}:
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

This means that probably one of your "autorN" does not have two words, which causes split(" ") to return only one component (hence index 1 does not exist). I suggest you check this data that comes from the intent extras and make sure it is valid, or change your logic of dealing with these cases.

 2
Author: Pablo Almeida, 2016-02-01 18:01:09