안드로이드 개발 질문/답변
(글 수 45,052)
굉장히 복잡한데요...
한방에 말씀드리면 마지막 포지션 값에서는 확대축소도 안되고요
마지막 포지션에서 다른 탭액티버티의 뷰페이저를 다시 열면 인덱스 오류가 나네요.....
마지막 전 포지션에서만 해도 괜찮은데 다음 포지션에서는 에러가 나네요
그림에서 보면요
탭호스트로 구성된 화면에서
리스트뷰의 하나를 선택하면 탭호스트가 옮겨지고 뷰페이져가 뿌려집니다
여기서 이미지가 4개일 경우에는 4번째 이미지에서 다시 탭호스트의 처음메뉴를 클릭후
리스트뷰에서 다른 리스트를 클릭시 에러가 납니다
3번째 이미지에서만 선택해도 에러가 나지 않는데 ㅠ 마지막 그림에서만 에러가 나네요
네번째이미지는 확대 축소도 안되고요 ㅠㅠ
정말 설명 못했지만 한번 부탁드립니다...
02-13 17:15:05.028: I/check(8499): /2012/Gross/AC120002161/
02-13 17:15:05.048: I/check(8499): position4
02-13 17:15:05.048: W/dalvikvm(8499): threadid=1: thread exiting with uncaught exception (group=0x40bf61f8)
02-13 17:15:05.068: E/AndroidRuntime(8499): FATAL EXCEPTION: main
02-13 17:15:05.068: E/AndroidRuntime(8499): java.lang.IndexOutOfBoundsException: Invalid index 4, size is 4
02-13 17:15:05.068: E/AndroidRuntime(8499): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
02-13 17:15:05.068: E/AndroidRuntime(8499): at java.util.ArrayList.get(ArrayList.java:304)
02-13 17:15:05.068: E/AndroidRuntime(8499): at com.example.project.Viewer$ImagePagerAdapter.instantiateItem(Viewer.java:305)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:801)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.support.v4.view.ViewPager.populate(ViewPager.java:992)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.support.v4.view.ViewPager.populate(ViewPager.java:881)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1366)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1375)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1375)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-13 17:15:05.068: E/AndroidRuntime(8499): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2242)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1375)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-13 17:15:05.068: E/AndroidRuntime(8499): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2242)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.View.measure(View.java:12897)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1202)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2602)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.os.Looper.loop(Looper.java:137)
02-13 17:15:05.068: E/AndroidRuntime(8499): at android.app.ActivityThread.main(ActivityThread.java:4512)
02-13 17:15:05.068: E/AndroidRuntime(8499): at java.lang.reflect.Method.invokeNative(Native Method)
02-13 17:15:05.068: E/AndroidRuntime(8499): at java.lang.reflect.Method.invoke(Method.java:511)
02-13 17:15:05.068: E/AndroidRuntime(8499): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-13 17:15:05.068: E/AndroidRuntime(8499): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
02-13 17:15:05.068: E/AndroidRuntime(8499): at dalvik.system.NativeStart.main(Native Method)
02-13 17:20:12.377: W/Resources(8772): Converting to string: TypedValue{t=0x12/d=0x0 a=3 r=0x7f080000}
로그값입니다
@Override
public Object instantiateItem(View container, final int position) {
Context context = Viewer.this;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.imageadapter, null);
//View v = inflater.inflate(m_pagerResource[position], null);
//imageView = new ImageView(context);
imageView = (ImageView)v.findViewById(R.id.imageV);
mGestureDetector = new GestureDetector(Viewer.this, new SimpleGestureListener());
final TextView tv = (TextView)v.findViewById(R.id.tv);
final Button info = (Button)v.findViewById(R.id.info);
final TextView id = (TextView)v.findViewById(R.id.id);
final TextView iman = (TextView)v.findViewById(R.id.iman);
tv.setText(Worklist.selItem.num);
id.setText(Worklist.selItem.ID);
Log.i("check","position"+position);
iman.setText(position+1 +"/"+Worklist.selItem.image);
Bitmap bitmap= null;
bitmap = BitmapFactory.decodeFile(path+file_name.get(position).substring(1)); //이부분에서 에러납니다
int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_small);
imageView.setPadding(padding, padding, padding, padding);
imageView.setImageBitmap(bitmap);
혹시몰라 소스추가했습니다 ㅠㅠ
로그에 index 4, size is 4 오류라고 나와있는데요ㅋㅋㅋ
뷰페이저 포지션이 4까지 간 상태에서 리스트 뷰에서 다시 클릭한다고 햇는데
리스트뷰에서 클릭한 아이템이 4개이하일 경우 오류, 4개 이상일 경우 오류가 안날거 같은데요 ㅋ
뷰페이저를 초기화를 안했다면 4번부터 다시 그릴테니까요.