Java 片段内的addView()抛出NullPointerException

Java 片段内的addView()抛出NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正在从事具有MyAdapter的片段活动的Android项目: public static class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public int getCount() {

我正在从事具有MyAdapter的片段活动的Android项目:

public static class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public int getCount() {
            return ITEMS;
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0: // Fragment # 0 - Pokazuje listę
                return ImageFragment.init(position);
                //return TruitonListFragment.init(position);
            case 1: // Fragment # 1 - Pokazuje wybór
                return ImageFragment.init(position);
            default:
                return ImageFragment.init(position);
            }
        }
    }
现在我有了一个ImageFragment类,它扩展了Fragment。我正试图将ImageFragment中的View()添加到布局中的元素中,我遇到了NullPointerException。它在活动中起作用,但在片段中不起作用。有可能解决这个问题,到底发生了什么

public class ImageFragment extends Fragment implements OnClickListener {

    int fragVal;

    public static ImageFragment init(int val) {
        ImageFragment truitonFrag = new ImageFragment();
        // Supply val input as an argument.
        Bundle args = new Bundle();
        args.putInt("val", val);
        truitonFrag.setArguments(args);
        return truitonFrag;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        InitializeDatabase(); // Wczytanie zasobów

        fragVal = getArguments() != null ? getArguments().getInt("val") : 1;

        //
        AddonsList = new ArrayList<myAddons>();

        //
        Parent = new ArrayList<Long>();
        Parent.add((long) 0);
        GenerateNodeTree((long) 0); // Ustawienie fragmentu na początek
    }

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

        View layoutView = inflater.inflate(R.layout.fragment_pager_list,
                container, false);
        linearLayout = new LinearLayout(getActivity());
        linearLayout = (LinearLayout) layoutView.findViewById(R.id.Groups);
        linearLayout = new LinearLayout(getActivity());
        GoTop = (Button) layoutView.findViewById(R.id.Button02);
        GoHome = (Button) layoutView.findViewById(R.id.Button01);

        return layoutView;
    }

    private void GenerateNodeTree(Long TreeNode) {
        try {
            currentProductList = new ArrayList<Products>();
            ClearView();

            for(ProductGroups grupa : myGroupList) {
                Log.i("mm",grupa.getNazwa());

                LinearLayout row = new LinearLayout(getActivity());
                row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                if(grupa.getPARENTID() == TreeNode & grupa.getPOSPRODID() == 0) { // Przyciski kategorii

                    ImageButton imgTag = new ImageButton(getActivity());
                    Button btnTag = new Button(getActivity());

                    int k = R.drawable.icon_empt;
                    imgTag.setImageResource(k);

                    btnTag.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
                    btnTag.setText(grupa.getNazwa());
                    btnTag.setId((int) grupa.getPOSPRODGRPID()); 
                    btnTag.setOnClickListener(this);

                    row.addView(imgTag);
                    row.addView(btnTag); 
                    linearLayout.addView(row); // HERE NULL POINTER APPEARS
                }

            }
        }
        catch(Exception exc)
        {
            //Print.StandardToast(getActivity(), exc.getStackTrace().toString());
        }
        // Koniec generowania widoku
    }

}
公共类ImageFragment扩展了片段实现OnClickListener{
国际弗拉格瓦尔;
公共静态ImageFragment init(int val){
ImageFragment truitonFrag=新ImageFragment();
//提供val输入作为参数。
Bundle args=新Bundle();
参数putInt(“val”,val);
truitonFrag.setArguments(args);
返回truitonFrag;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
InitializeDatabase();//Wczytanie zasobów
fragVal=getArguments()!=null?getArguments().getInt(“val”):1;
//
AddOnList=新的ArrayList();
//
父项=新的ArrayList();
Parent.add((long)0);
GenerateNodeTree((长)0);//Ustavienie fragmentu na początek
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图布局视图=充气机。充气(R.layout.fragment\u pager\u列表,
货柜(虚假);;
linearLayout=新的linearLayout(getActivity());
linearLayout=(linearLayout)layoutView.findViewById(R.id.Groups);
linearLayout=新的linearLayout(getActivity());
GoTop=(按钮)layoutView.findViewById(R.id.Button02);
GoHome=(按钮)layoutView.findViewById(R.id.Button01);
返回布局视图;
}
专用void GenerateNodeTree(长树节点){
试一试{
currentProductList=新的ArrayList();
ClearView();
对于(ProductGroups grupa:myGroupList){
Log.i(“mm”,grupa.getNazwa());
LinearLayout行=新的LinearLayout(getActivity());
row.setLayoutParams(新的LayoutParams(LayoutParams.MATCH_父级,LayoutParams.WRAP_内容));
如果(grupa.getPARENTID()==TreeNode&grupa.getPOSPRODID()==0){//Przyciski-kategorii
ImageButton imgTag=新的ImageButton(getActivity());
按钮btnTag=新按钮(getActivity());
int k=R.drawable.icon\u empt;
imgTag.setImageResource(k);
btnTag.setLayoutParams(新的LayoutParams(LayoutParams.MATCH_父级,LayoutParams.MATCH_父级));
btnTag.setText(grupa.getNazwa());
btnTag.setId((int)grupa.getPOSPRODGRPID());
btnTag.setOnClickListener(此);
row.addView(imgTag);
行。添加视图(btnTag);
linearLayout.addView(行);//此处显示空指针
}
}
}
捕获(异常exc)
{
//Print.standardtoos(getActivity(),exc.getStackTrace().toString());
}
//维多库河
}
}

您的片段类中似乎没有
线性布局
字段(代码遗漏?)。无论如何,您似乎初始化了
onCreateView()
回调中的
linearLayout
字段。问题是您试图在
onCreate()
方法中也使用它(通过
GenerateNodeTree()
调用),该方法在之前被调用
onCreateView()
(因此,
linearLayout
此时不会被初始化)。因此,移动
GenerateNodeTree((long)0)onCreateView()
或在
onCreateView()
之后调用的
onActivityCreated()
中调用你是对的,我调用的GenerateNodeTree在初始化之前使用linearLayout。我在onCreateView中使用GenerateNodeTree,没有例外!:)非常感谢。