在發佈這個問題之前,我沒有檢查那些關於無限畫廊的帖子,但它沒有爲我工作。畫廊保持原樣。這段代碼:gallery.setSelection((int)(Integer.MAX_VALUE/2) - (Integer.MAX_VALUE/2)% mImageIds.length);
甚至不會影響畫廊。此外,我只是寫7
而不是mImageIds.length
,因爲我的圖庫包含7個項目,而不是在onCreate
本身中定義圖庫項目,而只是獲取setSelection()
聲明的長度。但LogCat
開始顯示ArrayIndexOutOfBounds Exception
。那麼我有什麼選擇?我做了每個人都會做的事情。我刪除了7
,並將代碼解開,直到它運行正常。但是,再次,LogCat沒有出現這個錯誤。它確實令人沮喪。請幫忙。無限無盡的畫廊?那麼,它不適合我
如果有人可以幫助無盡的畫廊,這將是一個很大的幫助。
感謝您的期待。
logcat的:
03-17 18:46:09.681:d/android.widget.GridLayout(626):水平約束條件:X7 - X0> 320,X 4 - X 3> 87,X 5 - X4> 0 ,x6 - x5> 77,x4 - x2 < 64,x4 - x3 < 64,x2 - x1 < 64,x1 - x0 < 64不一致;永久刪除:x7 - x0 < 320,x4 - x2 < 64,x4 - x3 < 64. 03-17 18:46:09.691:D/android.widget.GridLayout(626):vertical constraints:y1 - y0> 21 ,y2-y1> 45,y3-y2> 42,y4-y3> 40,y5-y4> 10,y6-y5> 48,y7-y6> 0,y8-y7> 48,y9-y8> 0,y10 -y9> 48,y11-y10> 0,y12-y11> 44,y12-y10> 48,y13-y12> 82,y13-y0 < 199,y12-y11 < 44不一致;永久刪除:y13 - y0 < 199. 03-17 18:46:09.751:D/AndroidRuntime(626):關閉VM 03-17 18:46:09.751:W/dalvikvm(626):threadid = 1:線程退出與未捕獲的異常(組= 0x409c01f8) 03-17 18:46:09.771:E/AndroidRuntime(626):致命例外:主 03-17 18:46:09.771: E/AndroidRuntime(626): java.lang.ArrayIndexOutOfBoundsException: length=7; index=1073741823
03-17 18:46:09.771:E/AndroidRuntime(626)在com.sanjay.frames.FramesActivity $ ImageAdapter.getView(FramesActivity.java:86) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.widget.Gallery.makeAndAddView(Gallery.java:844 ) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.widget.Gallery.layout(Gallery.java:645) 03-17 18:46:09.771:E/AndroidRuntime(626)在android.widget.Gallery.onLayout(Gallery.java:346) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.view.View.layout(View.java:11278) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.view.ViewGroup.layout(ViewGroup.java:4224) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.widget。 LinearLayout.onLayout(LinearLayout.java:1399) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.view.View.layout(View.java:11278) 03-17 18:46: 09.771:E/AndroidRuntime(626):在android.view.ViewGroup.layout(ViewGroup.java:4224) 03-17 18:46:09.771:E/AndroidRuntime(626):at a ndroid.widget.FrameLayout.onLayout(FrameLayout.java:431) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.view.View.layout(View.java:11278) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.view.ViewGroup.layout(ViewGroup.java:4224) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.widget。 LinearLayout.setChildFrame(LinearLayout.java:1628) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.widget.LinearLayout。layoutVertical(LinearLayout.java:1486) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 03-17 18:46:09.771: E/AndroidRuntime(626):在android.view.View.layout(View.java:11278) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.view.ViewGroup.layout(ViewGroup。 java:4224) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.widget.FrameLayout.onLayout(FrameLayout.java:431) 03-17 18:46:09.771:E/AndroidRuntime 626):at android.view.View.layout(View.java:11278) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.view.ViewGroup.layout(ViewGroup.java:4224) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489) 03-17 18:4 6:09.771:E/AndroidRuntime(626):在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 03-17 18:46:09.771:E/AndroidRuntime(626):在android.os.Handler。 dispatchMessage(Handler.java:99) 03-17 18:46:09.771:E/AndroidRuntime(626):at android.os.Looper.loop(Looper.java:137) 03-17 18:46:09.771: E/AndroidRuntime(626):at android.app.ActivityThread.main(ActivityThread.java:4424) 03-17 18:46:09.771:E/AndroidRuntime(626):at java.lang.reflect.Method.invokeNative Native Method) 03-17 18:46:09.771:E/AndroidRuntime(626):at java.lang.reflect.Method.invoke(Method.java:511) 03-17 18:46:09.771:E/AndroidRuntime (626):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) 03-17 18:46:09.771:E/AndroidRuntime(626):at com.android.internal.o s.ZygoteInit.main(ZygoteInit.java:551) 03-17 18:46:09.771:E/AndroidRuntime(626):在dalvik.system.NativeStart.main(本機方法)
下面是代碼我畫廊:
public class FramesActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DisplayMetrics metrics=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Gallery gallery = (Gallery) findViewById(R.id.gallery);
Integer[] mImageIds = {
R.drawable.ic_launcher,
R.drawable.ic_menu_template,
R.drawable.th,
R.drawable.wt,
R.drawable.cur,
R.drawable.ic_launcher,
R.drawable.ic_launcher
};
gallery.setAdapter(new ImageAdapter(this));
gallery.setSelection((int)(Integer.MAX_VALUE/2) - (Integer.MAX_VALUE/2)% mImageIds.length);
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
EditText editText2=(EditText) findViewById(R.id.editText2);
editText2.setText(""+position);
}
});
}
public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;
private Integer[] mImageIds = {
R.drawable.ic_launcher,
R.drawable.ic_menu_template,
R.drawable.th,
R.drawable.wt,
R.drawable.cur,
R.drawable.ic_launcher,
R.drawable.ic_launcher
};
public ImageAdapter(Context c) {
mContext = c;
TypedArray attr = mContext.obtainStyledAttributes(R.styleable.Frames);
mGalleryItemBackground = attr.getResourceId(
R.styleable.Frames_android_galleryItemBackground, 0);
attr.recycle();
}
public int getCount() {
return mImageIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mImageIds[position]);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 100));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setBackgroundResource(mGalleryItemBackground);
return imageView;
}
}
}
另外,我在android系統development.So一個新手,如果你看到上面的代碼中任何其他錯誤,不介意指着他們。
順便說一句,畫廊工作正常,如果我只是刪除'setSelection()'語句。 – Exorcist 2012-03-17 13:33:22