Ich habe eine GridView. Jedes der Elemente in der GridView enthält einige ImageView und TextView. Im onLongPress() - Handler rufe ich den startDrag auf dem ImageView auf. Alles funktioniert ohne das erste Element von gridView. Ich erhalte die NullPointerExpception mit ihm:startDrag() ruft NullPointerException mit der ersten Ansicht bei fester Größe GridView Item
E/View: Unable to initiate drag
E/View: java.lang.NullPointerException: Attempt to read from field 'android.view.IWindowSession android.view.View$AttachInfo.mSession' on a null object reference
E/View: at android.view.View.startDrag(View.java:20983)
E/View: at com.abc.xyz.util.view.CustomGridView$1.onItemLongClick(ES.java:55)
E/View: at android.widget.AbsListView.performLongPress(AbsListView.java:3939)
E/View: at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:3864)
E/View: at android.os.Handler.handleCallback(Handler.java:739)
E/View: at android.os.Handler.dispatchMessage(Handler.java:95)
E/View: at android.os.Looper.loop(Looper.java:158)
E/View: at android.app.ActivityThread.main(ActivityThread.java:7229)
E/View: at java.lang.reflect.Method.invoke(Native Method)
E/View: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
E/View: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
konnte ich überprüfen, ob alle der zu startgebenen Argumente waren nicht-null - ein ClipData, ein DragShadowBuilder, und meiner Ansicht nach als LocalState. Hier ist der Code-Schnipsel:
ClipData.Item item = new ClipData.Item(((ABC) getItemAtPosition(position)).getUri());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData data = new ClipData("", mimeTypes, item);
data.addItem(new ClipData.Item(position + ""));
DragShadowBuilder shadowBuilder = new DragShadowBuilder(view.findViewById(R.id.img));
view.startDrag(data, // data to be dragged
shadowBuilder, // drag shadow
view, // local data about the drag and drop operation
0 // no needed flags
);
Ich fand, dass, wenn festgelegte Größe von Gridview-Elemente in Adapter befestigt ist, wird das Problem auftreten.
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
...
v.setLayoutParams(new AbsListView.LayoutParams((int) mContext.getResources().getDimension(R.dimen.pp_item_w),
(int) mContext.getResources().getDimension(R.dimen.pp_item_h)));
return v;
}
Also, was ich in diesem Fall tun kann und fixierte Größe von GridView Artikel behalten.
Mögliche Duplikat [Was für eine Nullpointer ist, und wie kann ich es beheben?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do- ich befestige es) –