1

so im doing a school project on a movie review app. so heres my code for the next and previous button. The next button works fine without crashing. when i press back it works but once it reaches the very first movie and i press back again the app crashes.

private Movie movies[]= new Movie[5];

public MovieCollection(){
    prepareMovies();
}

public Movie searchById(String id){
    Movie movie = null;

    for(int index=0; index < movies.length; index++){
        movie = movies[index];
        if(movie.getId().equals(id)){
            return movie;
        }
    }
    return movie;
}
public Movie getNextMovie(String currentMovieId){
    Movie movie = null;
    for(int index = 0; index < movies.length; index++) {
        String tempMovieId = movies[index].getId();
        if (tempMovieId.equals(currentMovieId) && (index < movies.length - 1)) {
            movie = movies[index + 1];
            break;
        }
    }
    return movie;
}


public Movie getPrevMovie(String currentMovieId){
    Movie movie = null;
    for(int index = 0; index < movies.length; index++){
        String tempMovieId = movies[index].getId();
        if(tempMovieId.equals(currentMovieId) && (index > 0)){
            movie = movies[index - 1];
            break;
        }
    }
    return movie;
}

my code for the button.

public void goNext(View view){
    Movie nextMovie = movieCollection.getNextMovie(movieId);
    if(nextMovie != null){
        movieId = nextMovie.getId();
        title = nextMovie.getTitle();
        plot = nextMovie.getPlot();
        movieArt = nextMovie.getMovieArt();
        rating = nextMovie.getRating();
        review1 = nextMovie.getReview1();
        review2 = nextMovie.getReview2();
        displayMovie(title , plot, movieArt, rating, review1, review2);
    }
}
public void goPrevious(View view){
    Movie prevMovie = movieCollection.getPrevMovie(movieId);
    if (prevMovie != null){
        movieId = prevMovie.getId();
        title = prevMovie.getTitle();
        plot = prevMovie.getPlot();
        movieArt = prevMovie.getMovieArt();
        rating = prevMovie.getRating();
        review1 = prevMovie.getReview1();
        review2 = prevMovie.getReview2();
        displayMovie(title , plot, movieArt, rating, review1, review2);

    }
}

error report can anyone tell me what is wrong with my code. thanks

07-06 14:19:36.635 3782-3782/com.example.growt.lucascomt E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.growt.lucascomt, PID: 3782
java.lang.IllegalStateException: Could not execute method for android:onClick
    at android.view.View$DeclaredOnClickListener.onClick(View.java:4452)
    at android.view.View.performClick(View.java:5198)
    at android.view.View$PerformClick.run(View.java:21147)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at android.view.View$DeclaredOnClickListener.onClick(View.java:4447)
    at android.view.View.performClick(View.java:5198) 
    at android.view.View$PerformClick.run(View.java:21147) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.growt.lucascomt.Movie.getId()' on a null object reference
    at com.example.growt.lucascomt.MovieCollection.getPrevMovie(MovieCollection.java:38)
    at com.example.growt.lucascomt.MovieInfo.goPrevious(MovieInfo.java:86)
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.view.View$DeclaredOnClickListener.onClick(View.java:4447) 
    at android.view.View.performClick(View.java:5198) 
    at android.view.View$PerformClick.run(View.java:21147) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
  • Add crash report/log. This will be better for others to find bug faster. – SHS Jul 06 '18 at 13:24
  • check that *Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.growt.lucascomt.Movie.getId()' on a null object reference* the problem is in this line of code `String tempMovieId = movies[index].getId()` I presume and `movies[index]` is null causing the `NullPointerException` – HawkPriest Jul 06 '18 at 15:26
  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – MadScientist Jul 06 '18 at 15:54

0 Answers0