-3

I made an incredibly simple app but for some reason it's just crashing. The first page is a simple login screen however the moment I click login it just crashes. The strange part is that there's not even any heavy code to make it do anything strange like that; I'm just making it travel between activities so far.

The main activity

package com.example.philip.lottery1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class LoginActivity extends AppCompatActivity {
Button loginButton;
EditText userNameField;
EditText passwordField;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    loginButton = (Button) findViewById(R.id.loginButton);
    userNameField = (EditText) findViewById(R.id.userNameField);
    passwordField = (EditText) findViewById(R.id.passwordField);
    final String userName = userNameField.getText().toString();
    String password = passwordField.getText().toString();

    loginButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent intent = new Intent(getApplicationContext(), CreateTicket.class);
            intent.putExtra("ClerkID", userName);
            startActivity(intent);
        }
    });
}


}

The activity it leads to

package com.example.philip.lottery1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.Random;

public class CreateTicket extends AppCompatActivity {
private Button randomButton;
private Button OKButton;
private Button searchButton;
private EditText[] lottoNumberFields;
private int[] lottoNumbers;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_create_ticket);
    lottoNumberFields = new EditText[5];
    lottoNumberFields[1] = (EditText)findViewById(R.id.num1);
    lottoNumberFields[2] = (EditText)findViewById(R.id.num2);
    lottoNumberFields[3] = (EditText)findViewById(R.id.num3);
    lottoNumberFields[4] = (EditText)findViewById(R.id.num4);
    lottoNumberFields[5] = (EditText)findViewById(R.id.num5);
    randomButton = (Button) findViewById(R.id.randomButton);
    OKButton = (Button) findViewById(R.id.OKButton);
    searchButton = (Button) findViewById(R.id.searchButton);

    randomButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            randommize();
        }
    });

    OKButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            createTicket();
        }
    });

    searchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            search();
        }
    });
}

private void search()
{
    //insert code here
    Intent intent = new Intent (getBaseContext(),TicketActivity.class);
    startActivity(intent);
}

private void randommize()
{
    for (int i = 0 ; i < 5 ; i ++)
    {
        Random random = new Random();
        int num = random.nextInt(49) + 1;
        lottoNumberFields[i].setText(num+"");
    }
}

private void createTicket()
{
    for (int i = 0; i < 5; i++)
    {
        lottoNumbers[i] = Integer.parseInt(lottoNumberFields[i].getText().toString());
    }
    Intent intent = new Intent(getBaseContext(), FinalActivity.class);
    intent.putExtra("lottoNumbers",lottoNumbers);
    startActivity(intent);
}
}
  • `lottoNumberFields = new EditText[5];`, `lottoNumberFields[5] = ...` - The max index there is 4, as arrays are zero-based in Java. You should see an Exception to that effect in the [stack trace](http://stackoverflow.com/questions/23353173), if that is indeed the immediate issue. – Mike M. Sep 10 '17 at 02:50
  • Make sure you have a entry for "CreateTicket" Activity in AndroidManifest.xml – Lokkesh Sep 10 '17 at 02:50
  • Welcome to StackOverflow! Did you declare `CreateTicket` in your manifest? – Greg Whatley Sep 10 '17 at 02:54
  • I've declared it in my manifest – Philip Kwok Sep 10 '17 at 02:57

1 Answers1

0

Your lottoNumberFields array is of length 5, but you are going from 1 to 5 index values for it, instead of 0 to 4. Change the code as below:

lottoNumberFields = new EditText[5];
lottoNumberFields[0] = (EditText)findViewById(R.id.num1);
lottoNumberFields[1] = (EditText)findViewById(R.id.num2);
lottoNumberFields[2] = (EditText)findViewById(R.id.num3);
lottoNumberFields[3] = (EditText)findViewById(R.id.num4);
lottoNumberFields[4] = (EditText)findViewById(R.id.num5);
Iqbal S
  • 1,156
  • 10
  • 16