Android Build an Interactive Story App Finishing the User Interface Using a Model in the Presenter

michael lee
michael lee
5,176 Points

looks like you aren't creating spaceship in the onCreate method

what am I doing wrong?

LandingActivity.java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class LandingActivity extends AppCompatActivity {

    public Button thrustButton;
    public TextView typeLabel;
    public EditText passengersField;

    public Spaceship spaceship;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_landing);

        thrustButton = (Button)findViewById(R.id.thrustButton);
        typeLabel = (TextView)findViewById(R.id.typeTextView);
        passengersField = (EditText)findViewById(R.id.passengersEditText);

      Spaceship spaceship = new Spaceship("FIREFLY");
        // Add your code here!

    }
}
Spaceship.java
public class Spaceship {
    private String shipType;
    private int numPassengers = 0;

    public String getShipType() {
      return shipType;
    }

    public void setShipType(String shipType) {
      this.shipType = shipType;
    }

    public int getNumPassengers() {
      return numPassengers;
    }

    public void setNumPassengers(int numPassengers) {
      this.numPassengers = numPassengers;
    }

    public Spaceship() {
      shipType = "SHUTTLE";
    }

    public Spaceship(String shipType) {
      this.shipType = shipType;
    }
}

1 Answer

Tadeáš Firich
Tadeáš Firich
7,866 Points

Hello, Michael. You can't create a spaceship variable in onCreate method because the spaceship was created in the LandingActivity. Here:

public Spaceship spaceship;

Your job is to set spaceship to a new Spaceship object, NOT CREATE and set spaceship to a new Spaceship object. :) It means... From your code:

Spaceship spaceship = new Spaceship("FIREFLY");

Delete word the first word (Spaceship) from your line of code. The right version is this

spaceship = new Spaceship("FIREFLY");

Was it helpful? Do you understand the difference between creating and setting a variable?