Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android RecyclerView中的NullPointerException_Java_Android_Android Fragments_Android Recyclerview_Nullpointerexception - Fatal编程技术网

Java Android RecyclerView中的NullPointerException

Java Android RecyclerView中的NullPointerException,java,android,android-fragments,android-recyclerview,nullpointerexception,Java,Android,Android Fragments,Android Recyclerview,Nullpointerexception,我的日志猫: 07-21 12:57:34.714 2376-2376/com.example.car E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.car, PID: 2376 java.lang.NullPointerException at com.example.car.MainActivity.OnItemClicked(MainActivity.java:82)

我的日志猫:

07-21 12:57:34.714 2376-2376/com.example.car E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.car, PID: 2376
    java.lang.NullPointerException
        at com.example.car.MainActivity.OnItemClicked(MainActivity.java:82)
        at com.example.car.CarAdapter$ViewHolder$1.onClick(CarAdapter.java:45)
        at android.view.View.performClick(View.java:4438)
        at android.view.View$PerformClick.run(View.java:18422)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)

Main.activity.java

package com.example.car;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements CarAdapter.ItemClicked {

    Button btnCarinfo,btnOwnerinfo;
    ImageView ivMake;
    TextView tvModel ,tvName,tvTel;
    FragmentManager fragmentManager;
    CardView cvDetails;
    Fragment ListFragment,ButtonFragment,CarInfoFragment,OwnerFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragmentManager=getSupportFragmentManager();

        btnCarinfo=findViewById(R.id.btnCarinfo);
        btnOwnerinfo=findViewById(R.id.btnOwnerinfo);
        ivMake=findViewById(R.id.ivMake);
        tvModel=findViewById(R.id.tvModel);
        tvName=findViewById(R.id.tvName);
        cvDetails=findViewById(R.id.cvDetails);
        

        ListFragment=fragmentManager.findFragmentById(R.id.listfrag);
        ButtonFragment=fragmentManager.findFragmentById(R.id.buttonfrag);
        CarInfoFragment=fragmentManager.findFragmentById(R.id.carinfofrag);
        OwnerFragment=fragmentManager.findFragmentById(R.id.ownerfrag);

        fragmentManager.beginTransaction()
                .show(ListFragment)
                .show(ButtonFragment)
                .show(CarInfoFragment)
                .hide(OwnerFragment)
                .commit();


        btnOwnerinfo.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View view) {
                fragmentManager.beginTransaction()
                        .show(OwnerFragment)
                        .hide(CarInfoFragment)
                        .commit();
            }
        }


        );

        btnCarinfo.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {

                fragmentManager.beginTransaction()
                        .show(CarInfoFragment)
                        .hide(OwnerFragment)
                        .commit();
            }
        });

//        OnItemClicked(0);
    }

    @Override
    public void OnItemClicked(int index)
    {
        tvName.setText( ApplicationClass.cars.get(index).getOwnerName());
        tvModel.setText(ApplicationClass.cars.get(index).getModel());
        tvTel.setText(ApplicationClass.cars.get(index).getOwnerTel());

        if(ApplicationClass.cars.get(index).getMake().equals("Volkswagen"))
        {
            ivMake.setImageResource(R.drawable.volkswagen);
        }
        else if(ApplicationClass.cars.get(index).getMake().equals("Nissan"))
        {
            ivMake.setImageResource(R.drawable.nissan);
        }
        else if(ApplicationClass.cars.get(index).getMake().equals("Mercedes"))
        {
            ivMake.setImageResource(R.drawable.b);
        }


    }
}
mport android.app.Application;

import java.util.ArrayList;

public class ApplicationClass extends Application
{
    public static ArrayList<Car> cars;


    @Override
    public void onCreate()
    {
        super.onCreate();
        cars=new ArrayList<Car>();
        cars.add(new Car("Volkswagen","Polo","Bheema","9090909090"));
        cars.add(new Car("Nissan","Nexa","Arjun","8585858585"));
        cars.add(new Car("Mercedes","EX500","Krishna","0990099900"));
        cars.add(new Car("Volkswagen","Leo","Duryodhan","9796989695"));
        cars.add(new Car("Nissan","Nexa","Abhimanyu","9292929292"));
        cars.add(new Car("Mercedes","PY678","Karna","4567865477"));
        cars.add(new Car("Volkswagen","Polo","Bhisma","6789765434"));




    }
}
package com.example.car;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class CarAdapter extends RecyclerView.Adapter<CarAdapter.ViewHolder>
{
    private ArrayList<Car> cars;
    ItemClicked activity;
    public interface  ItemClicked
    {
        void OnItemClicked(int index);
    }

    public  CarAdapter(Context context,ArrayList<Car> list)
    {

        cars=list;
        activity =(ItemClicked) context;
    }

    public class ViewHolder extends RecyclerView.ViewHolder
    {
        ImageView ivMake;
        TextView tvModel,tvOwner;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            ivMake=itemView.findViewById(R.id.ivMake);
            tvModel=itemView.findViewById(R.id.tvModel);
            tvOwner=itemView.findViewById(R.id.tvOwner);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view)
                {

                    activity.OnItemClicked(cars.indexOf(view.getTag()));

                }
            });
        }
    }
    @NonNull
    @Override
    public CarAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
    {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_layout,viewGroup,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull CarAdapter.ViewHolder viewHolder, int i)
    {
        viewHolder.itemView.setTag(cars.get(i));
        viewHolder.tvOwner.setText(cars.get(i).getOwnerName());
        viewHolder.tvModel.setText(cars.get(i).getModel());
        if(cars.get(i).getMake().equals("Volkswagen"))
        {
            viewHolder.ivMake.setImageResource(R.drawable.volkswagen);
        }
        else if(cars.get(i).getMake().equals("Nissan"))
        {
            viewHolder.ivMake.setImageResource(R.drawable.nissan);
        }
        else if(cars.get(i).getMake().equals("Mercedes"))
        {
            viewHolder.ivMake.setImageResource(R.drawable.b);
        }
    }

    @Override
    public int getItemCount() {
        return cars.size();
    }
}
package com.example.car;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ListFragment extends Fragment {

    RecyclerView recyclerView;
    RecyclerView.Adapter myAdapter;
    RecyclerView.LayoutManager layoutManager;
    View view;

    public ListFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view=inflater.inflate(R.layout.fragment_list, container, false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        recyclerView=view.findViewById(R.id.list);
        recyclerView.setHasFixedSize(true);

        layoutManager=new LinearLayoutManager(this.getActivity());

        recyclerView.setLayoutManager(layoutManager);

        myAdapter = new CarAdapter(this.getContext(),ApplicationClass.cars);
        recyclerView.setAdapter(myAdapter);
    }
}
Applicationclass.java

package com.example.car;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements CarAdapter.ItemClicked {

    Button btnCarinfo,btnOwnerinfo;
    ImageView ivMake;
    TextView tvModel ,tvName,tvTel;
    FragmentManager fragmentManager;
    CardView cvDetails;
    Fragment ListFragment,ButtonFragment,CarInfoFragment,OwnerFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragmentManager=getSupportFragmentManager();

        btnCarinfo=findViewById(R.id.btnCarinfo);
        btnOwnerinfo=findViewById(R.id.btnOwnerinfo);
        ivMake=findViewById(R.id.ivMake);
        tvModel=findViewById(R.id.tvModel);
        tvName=findViewById(R.id.tvName);
        cvDetails=findViewById(R.id.cvDetails);
        

        ListFragment=fragmentManager.findFragmentById(R.id.listfrag);
        ButtonFragment=fragmentManager.findFragmentById(R.id.buttonfrag);
        CarInfoFragment=fragmentManager.findFragmentById(R.id.carinfofrag);
        OwnerFragment=fragmentManager.findFragmentById(R.id.ownerfrag);

        fragmentManager.beginTransaction()
                .show(ListFragment)
                .show(ButtonFragment)
                .show(CarInfoFragment)
                .hide(OwnerFragment)
                .commit();


        btnOwnerinfo.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View view) {
                fragmentManager.beginTransaction()
                        .show(OwnerFragment)
                        .hide(CarInfoFragment)
                        .commit();
            }
        }


        );

        btnCarinfo.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {

                fragmentManager.beginTransaction()
                        .show(CarInfoFragment)
                        .hide(OwnerFragment)
                        .commit();
            }
        });

//        OnItemClicked(0);
    }

    @Override
    public void OnItemClicked(int index)
    {
        tvName.setText( ApplicationClass.cars.get(index).getOwnerName());
        tvModel.setText(ApplicationClass.cars.get(index).getModel());
        tvTel.setText(ApplicationClass.cars.get(index).getOwnerTel());

        if(ApplicationClass.cars.get(index).getMake().equals("Volkswagen"))
        {
            ivMake.setImageResource(R.drawable.volkswagen);
        }
        else if(ApplicationClass.cars.get(index).getMake().equals("Nissan"))
        {
            ivMake.setImageResource(R.drawable.nissan);
        }
        else if(ApplicationClass.cars.get(index).getMake().equals("Mercedes"))
        {
            ivMake.setImageResource(R.drawable.b);
        }


    }
}
mport android.app.Application;

import java.util.ArrayList;

public class ApplicationClass extends Application
{
    public static ArrayList<Car> cars;


    @Override
    public void onCreate()
    {
        super.onCreate();
        cars=new ArrayList<Car>();
        cars.add(new Car("Volkswagen","Polo","Bheema","9090909090"));
        cars.add(new Car("Nissan","Nexa","Arjun","8585858585"));
        cars.add(new Car("Mercedes","EX500","Krishna","0990099900"));
        cars.add(new Car("Volkswagen","Leo","Duryodhan","9796989695"));
        cars.add(new Car("Nissan","Nexa","Abhimanyu","9292929292"));
        cars.add(new Car("Mercedes","PY678","Karna","4567865477"));
        cars.add(new Car("Volkswagen","Polo","Bhisma","6789765434"));




    }
}
package com.example.car;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class CarAdapter extends RecyclerView.Adapter<CarAdapter.ViewHolder>
{
    private ArrayList<Car> cars;
    ItemClicked activity;
    public interface  ItemClicked
    {
        void OnItemClicked(int index);
    }

    public  CarAdapter(Context context,ArrayList<Car> list)
    {

        cars=list;
        activity =(ItemClicked) context;
    }

    public class ViewHolder extends RecyclerView.ViewHolder
    {
        ImageView ivMake;
        TextView tvModel,tvOwner;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            ivMake=itemView.findViewById(R.id.ivMake);
            tvModel=itemView.findViewById(R.id.tvModel);
            tvOwner=itemView.findViewById(R.id.tvOwner);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view)
                {

                    activity.OnItemClicked(cars.indexOf(view.getTag()));

                }
            });
        }
    }
    @NonNull
    @Override
    public CarAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
    {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_layout,viewGroup,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull CarAdapter.ViewHolder viewHolder, int i)
    {
        viewHolder.itemView.setTag(cars.get(i));
        viewHolder.tvOwner.setText(cars.get(i).getOwnerName());
        viewHolder.tvModel.setText(cars.get(i).getModel());
        if(cars.get(i).getMake().equals("Volkswagen"))
        {
            viewHolder.ivMake.setImageResource(R.drawable.volkswagen);
        }
        else if(cars.get(i).getMake().equals("Nissan"))
        {
            viewHolder.ivMake.setImageResource(R.drawable.nissan);
        }
        else if(cars.get(i).getMake().equals("Mercedes"))
        {
            viewHolder.ivMake.setImageResource(R.drawable.b);
        }
    }

    @Override
    public int getItemCount() {
        return cars.size();
    }
}
package com.example.car;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ListFragment extends Fragment {

    RecyclerView recyclerView;
    RecyclerView.Adapter myAdapter;
    RecyclerView.LayoutManager layoutManager;
    View view;

    public ListFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view=inflater.inflate(R.layout.fragment_list, container, false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        recyclerView=view.findViewById(R.id.list);
        recyclerView.setHasFixedSize(true);

        layoutManager=new LinearLayoutManager(this.getActivity());

        recyclerView.setLayoutManager(layoutManager);

        myAdapter = new CarAdapter(this.getContext(),ApplicationClass.cars);
        recyclerView.setAdapter(myAdapter);
    }
}
所以我做了一个非常简单的基本活动,其中有4个片段和一个Recycler视图,我得到了一个nullPointerException。我真的不知道为什么我会得到这个。任何帮助都将不胜感激!
资源链接:https://www.udemy.com/course/learn-android-application-development-y/learn/lecture/7811022#overview您的tvTel未初始化。您没有在onCrate()Main活动中进行以下操作:

tvTel = findViewById(R.id.tvTel);

您必须了解什么是NullPointerException才能解决此问题。请阅读: