Cómo resolver UnsupportedOperationException El método necesario destroyItem no se anuló
Aunque tengo la anulación destroyItem(...)
en PagerAdapter
obtener un error al deslizar las páginas en ViewPager
UnsupportedOperationException El método necesario destroyItem no se anuló
- Android ViewPager Botón Anterior / Siguiente
- Haciendo referencia a fragmentos invisibles en ViewPager
- Cómo hacer que PagerAdapter cargue todas las páginas
- Error "java.lang.IllegalStateException: No se puede cambiar la etiqueta de fragmento" cuando se utiliza ViewPager # setCurrentItem ()
- ViewPager con múltiples PageTransformer (PageTransformers en Runtime)
Código Java
public class PropertyPagerAdapter extends PagerAdapter { private Context _context; private int layoutId; private List<AddPropertyInfo> dataList; public PropertyPagerAdapter(Context context, int resourceId, List<AddPropertyInfo> objects) { // TODO Auto-generated constructor stub _context = context; layoutId = resourceId; dataList = objects; } @Override public int getCount() { // TODO Auto-generated method stub return dataList.size(); } @Override public boolean isViewFromObject(View v, Object obj) { // TODO Auto-generated method stub return v == ((View) obj); } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub super.destroyItem(container, position, object); ((ViewPager) container).removeView((View) object); } @SuppressLint("DefaultLocale") @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub LayoutInflater inflater = (LayoutInflater) _context.getSystemService( Context.LAYOUT_INFLATER_SERVICE); View pagerView = inflater.inflate(layoutId, container, false); TextView propertyNameTxtView = (TextView) pagerView. findViewById(R.id.propertyNameTxtView); TextView netIncomeTxtView = (TextView) pagerView. findViewById(R.id.netIncomeTxtView); TextView netIncomeValueTxtView = (TextView) pagerView. findViewById(R.id.netIncomeValueTxtView); TextView netExpTxtView = (TextView) pagerView. findViewById(R.id.netExpTxtView); TextView netExpValueTxtView = (TextView) pagerView. findViewById(R.id.netExpValueTxtView); TextView netProfitTxtView = (TextView) pagerView. findViewById(R.id.netProfitTxtView); TextView netProfitValueTxtView = (TextView) pagerView. findViewById(R.id.netProfitValueTxtView); propertyNameTxtView.setTypeface(Utils.getRegularTypeface(_context)); netIncomeTxtView.setTypeface(Utils.getRegularTypeface(_context)); netIncomeValueTxtView.setTypeface(Utils.getRegularTypeface(_context)); netExpTxtView.setTypeface(Utils.getRegularTypeface(_context)); netExpValueTxtView.setTypeface(Utils.getRegularTypeface(_context)); netProfitTxtView.setTypeface(Utils.getRegularTypeface(_context)); netProfitValueTxtView.setTypeface(Utils.getRegularTypeface(_context)); String propertyName = ""; double netIncomeVal; double netExpVal; double netProfitVal; AddPropertyInfo addPropertyInfo = dataList.get(position); netIncomeVal = addPropertyInfo.getIncomeAmnt(); netExpVal = addPropertyInfo.getExpAmnt(); netProfitVal = netIncomeVal - netExpVal; propertyName = addPropertyInfo.getPropertyName(); String netIncomeValStr = String.format("%.2f", netIncomeVal); String netExpValStr = String.format("%.2f", netExpVal); String netProfitValStr = String.format("%.2f", netProfitVal); propertyNameTxtView.setText(propertyName); netIncomeValueTxtView.setText(_context.getResources(). getString(R.string.doller) + netIncomeValStr); netExpValueTxtView.setText(_context.getResources(). getString(R.string.doller) + netExpValStr); netProfitValueTxtView.setText(_context.getResources(). getString(R.string.doller) + netProfitValStr); ((ViewPager) container).addView(pagerView); return pagerView; } }
Registro de errores
10-30 18:59:11.711: E/AndroidRuntime(27093): FATAL EXCEPTION: main 10-30 18:59:11.711: E/AndroidRuntime(27093): Process: com.teklabs.portfoliomanagenent, PID: 27093 10-30 18:59:11.711: E/AndroidRuntime(27093): java.lang.UnsupportedOperationException: Required method destroyItem was not overridden 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.support.v4.view.PagerAdapter.destroyItem(PagerAdapter.java:192) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.support.v4.view.PagerAdapter.destroyItem(PagerAdapter.java:124) 10-30 18:59:11.711: E/AndroidRuntime(27093): at com.teklabs.portfoliomanagenent.adapter.PropertyPagerAdapter.destroyItem(PropertyPagerAdapter.java:47) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.support.v4.view.ViewPager.populate(ViewPager.java:1002) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.support.v4.view.ViewPager.populate(ViewPager.java:914) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.support.v4.view.ViewPager$3.run(ViewPager.java:244) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.view.Choreographer.doCallbacks(Choreographer.java:603) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.view.Choreographer.doFrame(Choreographer.java:572) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.os.Handler.handleCallback(Handler.java:733) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.os.Handler.dispatchMessage(Handler.java:95) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.os.Looper.loop(Looper.java:157) 10-30 18:59:11.711: E/AndroidRuntime(27093): at android.app.ActivityThread.main(ActivityThread.java:5356) 10-30 18:59:11.711: E/AndroidRuntime(27093): at java.lang.reflect.Method.invokeNative(Native Method) 10-30 18:59:11.711: E/AndroidRuntime(27093): at java.lang.reflect.Method.invoke(Method.java:515) 10-30 18:59:11.711: E/AndroidRuntime(27093): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 10-30 18:59:11.711: E/AndroidRuntime(27093): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 10-30 18:59:11.711: E/AndroidRuntime(27093): at dalvik.system.NativeStart.main(Native Method)
¿Cómo resolverlo?
- No se puede cambiar ID de contenedor de fragmento
- Código fuente para la nueva aplicación Android Lollipop Calendar
- MultiViewPager + ZoomOutPageTransformer no funciona correctamente
- SetOnPageChangeListener no llama aPageSelected
- Barra lateral de Android como facebook o firefox
- Cómo alimentar datos a PagerAdapter
- Mostrar video de Youtube en viewpager
- Cómo poner viewpager dentro de fragmento en android?
No llames al super. retirar
super.destroyItem(container, position, object);
Un extracto del código fuente de PagerAdapter
123 public void More ...destroyItem(ViewGroup container, int position, Object object) { 124 destroyItem((View) container, position, object); 125 } 191 public void More ...destroyItem(View container, int position, Object object) { 192 throw new UnsupportedOperationException("Required method destroyItem was not overridden"); 193 }
Sólo anular:
@Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((View) object); }
Al anular destroyItem, debe quitar el objeto getted en el parámetro de su contenedor (también getted en parámetros). Puede emitirlo al tipo de vista correspondiente. Aquí está:
@Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((LinearLayout)object); }
- Método de clase de aplicación Android onCreate que se llama varias veces
- ¿Cómo aplicar la transición 3d entre dos actividades en android?