删除我之前的片段

时间:2013-12-09 14:02:16

标签: android

我的项目有问题。当用户按下一个按钮时,我会生成一个带有片段的新图像库(不包含Gallery类,因为已弃用)。当我转到应用程序的另一部分时,当用户再次按下此按钮时,muy app会在上一个库的右侧生成一个新的图库。

当按下此按钮3或4次时,应用程序破解,因为需要大量内存。

我的问题是:当我按下2或3或4 ...时间的按钮时,如何删除上一个图库(片段)?

我尝试使用onPause(在onPause上调用super.onDestroy(),this.onDetach(),((Object)layoutDinamicoHorizo​​ntal).destroyItem()...。

My Fragment有两个LinearLayout,一个垂直(垂直)和一个水平(layoutDinamicoHorizo​​ntal),代码在onActivityCreated中:

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutContenedor"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center_horizontal"
    android:gravity="top|center_horizontal"
    android:orientation="vertical">

    <HorizontalScrollView
        android:id="@+id/ScrollHorizontal"
    android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="none">

       <LinearLayout
            android:id="@+id/linearLayoutHorizontal"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

       </LinearLayout>

   </HorizontalScrollView>

</LinearLayout>

爪哇:

public class FragmentRecommendedWall extends FragmentBase implements Observer {

    private static final String PRUEBA_GALERIA = "pruebaGaleria";
    private static FragmentRecommendedWall mInstance = null;
    JSONArray jsonArrayData;
    private int anchoBitmap;

   public static FragmentRecommendedWall getInstance() {
        return mInstance;
    }

    private static final int CARD_SLOTS = 30;

    private LinearLayout layoutDinamicoHorizontal;
    private LinearLayout layoutGlobal;
    private HorizontalScrollView scrollView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        if (mView == null) {
            mView = inflater.inflate(R.layout.fragmentrecommendedwall,
                    container, 
                    false);
        }

        mView.setAlpha(0.0f);

        return mView;
    }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {

            mInstance = this;
            setUpModels();
        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);

            if(jsonArrayData!=null){
            final Resources res = getResources();

            // Capturamos el layout horizontal en una variable de tipo LinearLayout
            layoutDinamicoHorizontal = (LinearLayout) getView().findViewById(R.id.linearLayoutHorizontal);
            layoutGlobal = (LinearLayout) getView().findViewById(R.id.layoutContenedor);
            scrollView = (HorizontalScrollView) getView().findViewById(R.id.ScrollHorizontal);

            // Creamos un objeto de tipo ImageView
            ImageView imageViewDinamicoArriba;
            ImageView imageViewDinamicoAbajo;

            int j = 0;
            for (int i = 0; i < 30; i += 2){

                // Creamos un nuevo objeto de la clase ImageView
                imageViewDinamicoArriba = new ImageView(getActivity());
                imageViewDinamicoAbajo = new ImageView(getActivity());

                imageViewDinamicoArriba.setId(i);
                        imageViewDinamicoAbajo.setId(i+1);

                // Calculamos los sp con los pixeles
                int paddingLeft = (int) (15 * getResources().getDisplayMetrics().density);
                int paddingRight = (int) (15 * getResources().getDisplayMetrics().density);
                int paddingTop = (int) (15 * getResources().getDisplayMetrics().density);
                int paddingBotom = (int) (15 * getResources().getDisplayMetrics().density);

                // Aplicamos un padding a los objetos de la clase ImageView
                imageViewDinamicoArriba.setPadding(paddingLeft, paddingRight, paddingTop, paddingBotom);
                imageViewDinamicoAbajo.setPadding(paddingLeft, paddingRight, paddingTop, paddingBotom);

                Bitmap imagenArriba = null;
                Bitmap imagenAbajo = null;

                // Asignamos a los objetos Bitmap la imagen. La cogemos del método getTexture
                try {
                    imagenArriba = getTexture(i);
                    imagenAbajo = getTexture(i+1);

                } catch (IOException e) {
                    e.printStackTrace();
                }

                // Repetimos las imágenes para que haya 30
                if(j < 3){
                    if(imagenArriba == null && imagenAbajo == null){
                    i = 0;
                    j++;
                    }
                }

                // Se los pasamos a los objetos
                imageViewDinamicoArriba.setImageBitmap(imagenArriba);
                try {
                    imageViewDinamicoArriba.setTag((String) jsonArrayData.getJSONObject(i).get("contentDescription"));

                } catch (JSONException e) {
                    e.printStackTrace();
                }

                imageViewDinamicoAbajo.setImageBitmap(imagenAbajo);
                try {
                    imageViewDinamicoAbajo.setTag((String) jsonArrayData.getJSONObject(i + 1).get("contentDescription"));
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                // Hay que duplicar el setOnlickListener. Uno para la imagen de arriba y otro
                // para la imagen de abajo
               imageViewDinamicoArriba.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.i("galeria", "Dentro del onClick Imagen: " + v.getTag());
                    }
                });

                imageViewDinamicoAbajo.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.i("galeria", "Dentro del onClick Imagen: " + v.getTag());
                    }
                });

            LinearLayout vertical = new LinearLayout(getActivity());
                vertical.setOrientation(LinearLayout.VERTICAL);

                // Añadimos las vistas al objeto vertical
                vertical.addView(imageViewDinamicoArriba);  
                vertical.addView(imageViewDinamicoAbajo);

                layoutDinamicoHorizontal.addView(vertical);

                }// Fin del for

            scrollView.setScrollX(450);

            }// End of if(jsonArrayData!=null)

        } // End of onActivityCreated

        public static void destroy() {
            mInstance = null;
        }

} // End of Class FragmentRecommendedWall

非常感谢

0 个答案:

没有答案
相关问题