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

1

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.

Follow 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); 
    }
}

Image of the error: link

    
asked by anonymous 01.02.2016 / 18:11

1 answer

2

It seems like a problem with some of your access 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 out the data that comes from the Intent extras and make sure they are valid, or change your logic in handling these cases.

    
01.02.2016 / 19:01