Sunday, 15 April 2012

android - Wrong state class, expecting View State but -



android - Wrong state class, expecting View State but -

i getting error

java.lang.illegalargumentexception: wrong state class, expecting view state received class android.widget.abslistview$savedstate instead. happens when 2 views of different type have same id in same hierarchy. view's id id/unique111123234. create sure other views not utilize same id.

this error happens when switch between tabs in view pager. using custom compound view below

public class refreshablelistview extends swiperefreshlayout { private listview listview; private boolean disabled = false; private context context = null; private attributeset attributes = null; private relativelayout layout; public refreshablelistview(context context) { super(context); this.context = context; initview(); } public refreshablelistview(context context, attributeset attrs) { super(context, attrs); this.context = context; this.attributes = attrs; initview(); } private void initlistview() { listview = new listview(context, attributes); layout = new relativelayout(context); this.addview(layout); layout.addview(listview); } private void initview() { initlistview(); setcolorscheme(android.r.color.holo_blue_bright, android.r.color.holo_green_light, android.r.color.holo_orange_light, android.r.color.holo_red_light); } public void setadapter(listadapter adapter) { listview.setadapter(adapter); } public void setonitemclicklistener(adapterview.onitemclicklistener listener) { listview.setonitemclicklistener(listener); } @override public boolean canchildscrollup() { boolean canscroll = listview.getfirstvisibleposition() != 0; if (disabled) { canscroll = true; } homecoming canscroll; } public object getitematposition(int position) { homecoming listview.getitematposition(position); } public void setdisabled(boolean disable) { disabled = disable; } public boolean isdisabled() { homecoming disabled; } public void setemptyview(view emptyview) { layout.addview(emptyview); listview.setemptyview(emptyview); } public void setselection(int selection) { listview.setselection(selection); } public int getfirstvisibleposition() { homecoming listview.getfirstvisibleposition(); } public adapter getadapter() { homecoming listview.getadapter(); } public int getcount() { homecoming listview.getcount(); } }

i stumped have incite?

alternatively, can set id's avoid conflicts. had exact same error when adding views programatically custom compound widget!

in case, prepare to:

private void initlistview() { listview = new listview(context, attributes); layout = new relativelayout(context); // set id's ensure not same listview.setid(1000); layout.setid(10001); this.addview(layout); layout.addview(listview); }

i guess when inflate resources xml, android assigns random id inflated views

android

No comments:

Post a Comment