0
我在Android項目的工作與活動的片段具有MyAdapter:addView()內的片段引發NullPointerException異常
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類。我想在我的ImageFragment中添加View()來從佈局元素,並且我有NullPointerException。它在Activity中工作,但在Fragment中不起作用。有可能解決這個問題,到底發生了什麼?
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
}
}
你說得對,我在調用GenerateNodeTree,它在初始化之前使用linearLayout。我在onCreateView中使用GenerateNodeTree,並沒有例外! :) 謝謝! – boski