0

my problem is on line 39 that is null exception

btnDetail = findViewById(R.id.btn_move_activity);
        btnDetail.setOnClickListener(this);

my code

package com.example.aplikasimoviecataloguesub1;

import android.content.Intent;
import android.content.res.TypedArray;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button btnDetail;
    private String[] dataName;
    private String[] dataDescription;
    private String[] dataDate;
    private TypedArray dataPhoto;
    private MoviesAdapter adapter;
    private ArrayList<Movie> movies;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        adapter = new MoviesAdapter(this);

        ListView listView = findViewById(R.id.lv_list);
        listView.setAdapter(adapter);

        prepare();
        addItem();

        btnDetail = findViewById(R.id.btn_move_activity);
        btnDetail.setOnClickListener(this);
    }


    private void prepare() {
        dataName = getResources().getStringArray(R.array.data_name);
        dataDescription = getResources().getStringArray(R.array.data_description);
        dataDate = getResources().getStringArray(R.array.data_date);
        dataPhoto = getResources().obtainTypedArray(R.array.data_photo);
    }

    private void addItem() {
        movies = new ArrayList<>();
        for (int i = 0; i < dataName.length; i++) {
            Movie movie = new Movie();
            movie.setPhoto(dataPhoto.getResourceId(i, -1));
            movie.setName(dataName[i]);
            movie.setDate(dataDate[i]);
            movie.setDescription(dataDescription[i]);
            movies.add(movie);
        }
        adapter.setMovies(movies);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_move_activity:
                Intent moveIntent = new Intent(MainActivity.this, DetailActivity.class);
                startActivity(moveIntent);
                break;
        }
    }
}



and it is error

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at com.example.aplikasimoviecataloguesub1.MainActivity.onCreate(MainActivity.java:39)

halfer
  • 19,824
  • 17
  • 99
  • 186
Mulazi
  • 27
  • 1
  • 4

3 Answers3

0

Make sure R.id.btn_move_activity this id's view is from R.layout.activity_main this file.

Parth Suthar
  • 123
  • 4
0

Check the id you are passing for your button. According to the crash, you are accessing the button before it is initialised. It's like accessing something which doesn't exist in the memory. Hence NPE. Also, make it a habit of initialising all the views immediately after you call setContentView(). With this habit, you can avoid NPE's at-least for the views. Refer code below :

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initViews();
        initListeners();

        adapter = new MoviesAdapter(this);

        listView.setAdapter(adapter);

        prepare();
        addItem();

    }



    private void initViews() {
        listView = findViewById(R.id.lv_list);
        btnDetail = findViewById(R.id.btn_move_activity);

    }

    private void initListeners() {
        btnDetail.setOnClickListener(this);
    }

Let me know if you have any confusion. Happy Coding :)

Apurv
  • 391
  • 2
  • 9
0

You have to cast your variables to the relevant view elements, as follows

    ListView listView = (ListView)findViewById(R.id.lv_list);

    btnDetail = (Button)findViewById(R.id.btn_move_activity);
Uma Achanta
  • 3,669
  • 4
  • 22
  • 49