Java 来自其他类的Arraylist为空

Java 来自其他类的Arraylist为空,java,class,arraylist,constructor,Java,Class,Arraylist,Constructor,我正在尝试从其他类访问Arraylist。这可以工作,但Arraylist始终为空 public class CategoryFragment extends Fragment { private List<Category> lsCategory; public CategoryFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInf

我正在尝试从其他类访问Arraylist。这可以工作,但Arraylist始终为空

public class CategoryFragment extends Fragment {

private List<Category> lsCategory;

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    lsCategory = new ArrayList<>();

    lsCategory.add(new Category(1, getString(R.string.cat_school), R.drawable.cat_school_filled_48dp));
    lsCategory.add(new Category(2, getString(R.string.cat_food), R.drawable.cat_food_filled_48dp));
    lsCategory.add(new Category(3, getString(R.string.cat_sports), R.drawable.cat_sports_filled_48dp));
    lsCategory.add(new Category(4, getString(R.string.cat_travel), R.drawable.cat_travel_filled_48dp));
    lsCategory.add(new Category(5, getString(R.string.cat_hobbies), R.drawable.cat_sports_filled_48dp));
    lsCategory.add(new Category(6, getString(R.string.cat_countries), R.drawable.cat_countries_filled_48dp));
    lsCategory.add(new Category(7, getString(R.string.cat_numbers), R.drawable.cat_countries_filled_48dp));
    lsCategory.add(new Category(8, getString(R.string.cat_animals), R.drawable.cat_animals_filled_48dp));
    lsCategory.add(new Category(9, getString(R.string.cat_nature), R.drawable.cat_nature_filled_48dp));

    View v = inflater.inflate(R.layout.fragment_category, container, false);
    RecyclerView myRv = (RecyclerView) v.findViewById(R.id.main_recyclerView);
    CategoryRecyclerViewAdapter myAdapter = new CategoryRecyclerViewAdapter(getActivity(), lsCategory);
    myRv.setLayoutManager(new GridLayoutManager(getActivity(), 3));
    myRv.setAdapter(myAdapter);
    return v;
}

public List<Category> getLsCategory() {
    return lsCategory;
}
公共类CategoryFragment扩展了片段{
私人名单类别;
公共类别碎片(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
lsCategory=newarraylist();
lsCategory.add(新类别(1,getString(R.string.cat_school),R.drawable.cat_school_filled_48dp));
lsCategory.add(新类别(2,getString(R.string.cat_food),R.drawable.cat_food_filled_48dp));
lsCategory.add(新类别(3,getString(R.string.cat_sports),R.drawable.cat_sports_filled_48dp));
lsCategory.add(新类别(4,getString(R.string.cat_travel),R.drawable.cat_travel_filled_48dp));
lsCategory.add(新类别(5,getString(R.string.cat_嗜好),R.drawable.cat_体育填充(48dp));
lsCategory.add(新类别(6,getString(R.string.cat_countries),R.drawable.cat_countries_filled_48dp));
lsCategory.add(新类别(7,getString(R.string.cat_编号),R.drawable.cat_countries_filled_48dp));
lsCategory.add(新类别(8,getString(R.string.cat_animals),R.drawable.cat_animals_filled_48dp));
添加(新类别(9,getString(R.string.cat_nature),R.drawable.cat_nature_filled_48dp));
视图v=充气机。充气(R.layout.fragment_类别,容器,错误);
RecyclerView myRv=(RecyclerView)v.findViewById(R.id.main\u RecyclerView);
CategoryRecyclServiceAdapter myAdapter=新的CategoryRecyclServiceAdapter(getActivity(),lsCategory);
setLayoutManager(新的GridLayoutManager(getActivity(),3));
myRv.setAdapter(myAdapter);
返回v;
}
公共列表getLsCategory(){
返回类别;
}
}

在另一个类中,我尝试访问此Arraylist

public class FlashcardFragment extends Fragment {

private List<Flashcard> lsFlashcard;
private CategoryFragment categoryFragment;

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    lsFlashcard = new ArrayList<>();
    categoryFragment = new CategoryFragment();
    List<Category> calledList = categoryFragment.getLsCategory();

    if(calledList != null && !calledList.isEmpty()){
        for(int i = 0; i < calledList.size(); i++){
            int number = calledList.get(i).getId();

            if(number == 1){
                lsFlashcard.add(new Flashcard(1, getString(R.string.school_backpack), R.drawable.school_backpack));
                lsFlashcard.add(new Flashcard(2, getString(R.string.school_textbook), R.drawable.school_textbook));
                lsFlashcard.add(new Flashcard(3, getString(R.string.school_book), R.drawable.school_book));
                lsFlashcard.add(new Flashcard(4, getString(R.string.school_workbook), R.drawable.school_workbook));
                lsFlashcard.add(new Flashcard(5, getString(R.string.school_file), R.drawable.school_file));
            }
            else if(number == 2){
                lsFlashcard.add(new Flashcard(1, getString(R.string.school_backpack), R.drawable.school_backpack));
                lsFlashcard.add(new Flashcard(2, getString(R.string.school_textbook), R.drawable.school_textbook));
                lsFlashcard.add(new Flashcard(3, getString(R.string.school_book), R.drawable.school_book));
                lsFlashcard.add(new Flashcard(4, getString(R.string.school_workbook), R.drawable.school_workbook));
                lsFlashcard.add(new Flashcard(5, getString(R.string.school_file), R.drawable.school_file));
            }
            else{
                lsFlashcard.add(new Flashcard(1, getString(R.string.school_backpack), R.drawable.school_backpack));
                lsFlashcard.add(new Flashcard(2, getString(R.string.school_textbook), R.drawable.school_textbook));
                lsFlashcard.add(new Flashcard(3, getString(R.string.school_book), R.drawable.school_book));
                lsFlashcard.add(new Flashcard(4, getString(R.string.school_workbook), R.drawable.school_workbook));
                lsFlashcard.add(new Flashcard(5, getString(R.string.school_file), R.drawable.school_file));
            }
        }
    }
    else{

    }

    View v = inflater.inflate(R.layout.fragment_flashcard, container, false);
    RecyclerView myRv = (RecyclerView) v.findViewById(R.id.main_recyclerView);
    FlashcardRecyclerViewAdapter myAdapter = new FlashcardRecyclerViewAdapter(getActivity(), lsFlashcard);
    myRv.setLayoutManager(new GridLayoutManager(getActivity(), 3));
    myRv.setAdapter(myAdapter);
    return v;
}
公共类FlashcardFragment扩展了片段{
私人名单和信用卡;
私人类别分部类别分部;
公共FlashcardFragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
lsFlashcard=newarraylist();
categoryFragment=新的categoryFragment();
List calledList=categoryFragment.getLsCategory();
if(calledList!=null&&!calledList.isEmpty()){
对于(int i=0;i
}

我得到的错误是:


java.lang.NullPointerException:尝试对空对象引用调用接口方法“boolean java.util.List.add(java.lang.Object)”,这是因为您正在创建
CategoryFragment
的新实例并调用其
getLsCategory()方法

categoryFragment = new CategoryFragment();
List<Category> calledList = categoryFragment.getLsCategory();
categoryFragment=新的categoryFragment();
List calledList=categoryFragment.getLsCategory();
这里
私有列表类别
是一个实例变量,因此类的每个实例都有自己的
lsCategory
副本


如果希望此变量对所有实例都相同,请将其设置为static
private static List lsCategory

您正在创建一个
新CategoryFragment()
,而不是调用带有填充列表的类别。