我已经动态创建了标签,然后我以编程方式添加了一个带有n
拖放控制器的GridView。如果它只有一个选项卡,它都可以工作,但是如果你滚动到第二个选项卡,重新排列项目,然后返回,它会崩溃。我相信它,因为两个选项卡都使用相同的mDragController。它应该相当容易修复,任何想法如何使它们使用单独的控制器?
private DragController mDragController;
private boolean mLongClickStartsDrag = true; // If true, it takes a long click
protected void onCreate(Bundle savedInstanceState) {
...
final TabHost Tabs = (TabHost) findViewById(android.R.id.tabhost);
Tabs.setup();
int count;
for (count =0;count < 2;count++){
...
final int passedTabId = count;
NewTab.setContent(new TabHost.TabContentFactory()
{
public View createTabContent(String tag)
{
...
GridView dynGrid = new GridView(ManageRooms.this);
...
mDragController = new DragController (ManageRooms.this);
dynGrid.setAdapter (new ImageCellAdapter (ManageRooms.this, mDragController));
layout.addView(dynGrid);
return layout;
}
});
Tabs.addTab(NewTab);
}
}
public boolean startDrag (View v) {
v.setOnDragListener (mDragController);
mDragController.startDrag (v);
return true;
}
}
答案 0 :(得分:0)
解决方案:创建一个mDragControllers数组;
private DragController[] mDragController = new DragController[3];
然后根据当前Tab的id访问每个。