Получение исключения stackru при вставке изображений в gridview
У меня есть просмотр страниц внутри него есть фрагменты с gridview и изображения (Emojis) внутри gridview. это как занятие с смайликами, и вы можете перемещаться между разными типами смайликов. Это моя активность просмотра
SlidingTabLayout slidingTabLayout;
ViewPager viewPager;
Fragment[] fragments = {SmileysFragment.newInstance(0)};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.emoji_layout);
slidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tab_layout);
viewPager = (ViewPager) findViewById(R.id.view_pager);
initViews();
}
private void initViews() {
FragmentPagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return fragments[position];
}
@Override
public int getCount() {
return fragments.length;
}
};
viewPager.setAdapter(adapter);
List<DataHolder> dataHolders = new ArrayList<>();
for (int i = 0; i < fragments.length; ++i) {
dataHolders.add(new DataHolder(getResources().getDrawable(R.drawable.unselected),
getResources().getDrawable(R.drawable.selected), "我", getResources().getColor(R.color.md_material_blue_600)));
}
slidingTabLayout.setUpViewPager(viewPager, dataHolders);
}
Это мой фрагмент деятельности
public class SmileysFragment extends Fragment {
GridView grid;
public static final String KEY_INDEX = "index";
int[] image_ids = new int[]{
R.drawable.s1,
R.drawable.s2,
R.drawable.s3,
R.drawable.s4,
R.drawable.s5,
R.drawable.s6,
R.drawable.s6,
R.drawable.s6,
R.drawable.s6,
R.drawable.s6,
R.drawable.s6
};
public static SmileysFragment newInstance(int i) {
Bundle args = new Bundle();
args.putInt(KEY_INDEX, i);
SmileysFragment fragment = new SmileysFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view;
if (container == null) {
view = inflater.inflate(R.layout.smiley_emoji_layout,container,false);
grid = (GridView) view.findViewById(R.id.smileyGridview);
SmileysAdapter adapter = new SmileysAdapter(getActivity(), image_ids);
grid.setAdapter(adapter);
} else {
view = container;
}
return view;
}
Это мой класс адаптера
public class SmileysAdapter extends BaseAdapter{
private Context mContext;
private int[] image_ids;
public SmileysAdapter(Context c, int[] resources) {
mContext = c;
image_ids = resources;
}
@Override
public int getCount() {
return image_ids.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return image_ids[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View grid = convertView;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
grid = inflater.inflate(R.layout.smiley_item_layout, null);
}
ImageView imageView = (ImageView) grid.findViewById(R.id.smiley_item);
imageView.setImageResource(image_ids[position]);
return grid;
}
Это исключение, которое я получаю
02:07:11 E AndroidRuntime : FATAL EXCEPTION: main
02:07:11 E AndroidRuntime : java.lang.StackruError
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5355)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime: at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 E AndroidRuntime : at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
02:07:11 W ActivityManager : Force finishing activity com.example.app/.EmojiActivity
Скажите пожалуйста что я делаю не так
1 ответ
Ваш onCreateView()
испорчен.
Это должно выглядеть так:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.smiley_emoji_layout, container, false);
grid = (GridView) view.findViewById(R.id.smileyGridview);
SmileysAdapter adapter = new SmileysAdapter(getActivity(), image_ids);
grid.setAdapter(adapter);
return view;
}
Я думаю, что вы перепутали с адаптерами getView()
, Когда фрагмент создает свое представление, переработка не происходит. Контейнер никогда не будет нулевым. Вы должны всегда возвращать представление, которое вы надули, и никогда не возвращать сам контейнер.