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

Finally, notice that our Spaceship class has a new field to store the number of passengers in the ship. Use the method t

where am l getting it 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);

        // Add your code here!
        spaceship = new Spaceship("FIREFLY");
      typeLabel.setText(spaceship.getShipType());

      Int Integer =  spaceship.getNumPassengers().toSring();
      passengersField.setText(Integer.toString(spaceship.getNumpassengers()));



    }
}
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

Hi Glen. Let's have a look at your last 2 lines:

Int Integer =  spaceship.getNumPassengers().toSring();
  • The primitive type is int (all lowercase), not Int.
  • Integer is the name of the wrapper class for int in the Android framework, so you cannot name your variable that way. Remember that variable names should start with a lowercase, or the system will read it as a class. You could name it integer (lowercase) but it's best practice to pick descriptive names for your variables. So you could call it numPassengers or numberPassengers for example.
  • You do not need to call .toString() here as numPassengers (or whatever you decided to call it) is an integer (int), not a string.
passengersField.setText(Integer.toString(spaceship.getNumpassengers()));

You just have a small typo here: it's .getNumPassengers() (capital P).

Hope that helps :)