繁体   English   中英

在线性布局内以编程方式崩溃添加多个linearlayout

[英]adding multiple linearlayout inside a linearlayout programmatically crash

我想添加一个线性布局,该布局在用户从本地选择照片然后在(父)linearlayout中显示后立即具有图像和textview。 添加第一个linearlayout没问题,但是一旦我想输入第二个linearlayout,应用程序就会崩溃。

JAVA文件

public class newExpense extends Fragment {

ImageView addImage;
LinearLayout imageList;
final int RQS_LOADIMAGE = 0;

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

    View rootView = inflater.inflate(R.layout.new_expense_copy, container, false);  

    addImage = (ImageView) rootView.findViewById(R.id.addImage);
    addImage.setOnClickListener(buttonSaveOnClickListener);

    imageList = (LinearLayout) rootView.findViewById(R.id.imageList);

    return rootView;
}

ImageView.OnClickListener buttonSaveOnClickListener
= new ImageView.OnClickListener(){

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Select an option")
               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // User cancelled the dialog
                   }
               })
               .setItems(R.array.addImage, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {

                       if (which == 0) {
                           Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                           startActivityForResult(takePicture, RQS_LOADIMAGE);

                       } else {
                           Intent pickPhoto = new Intent(Intent.ACTION_PICK,
                               android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                           startActivityForResult(pickPhoto , RQS_LOADIMAGE);
                       }
                   } 
               });
            builder.show();
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == getActivity().RESULT_OK){
        switch(requestCode){
        case RQS_LOADIMAGE:
            Uri imageUri = data.getData();

            LinearLayout injecterLayout = (LinearLayout) getActivity().getLayoutInflater().inflate(R.layout.image_list, imageList, false);

            ImageView img = (ImageView) injecterLayout.findViewById(R.id.imageView);
            TextView txt = (TextView) injecterLayout.findViewById(R.id.textView1);
            img.setImageURI(imageUri);
            txt.setText(imageUri.getLastPathSegment().toString());
            imageList.addView(injecterLayout);

            break;  
        }
    }
}

}

子布局xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageItem"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/imageView"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:maxHeight="100dp"
    android:maxWidth="100dp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_weight="3"
    android:gravity="center_vertical"
    android:minWidth="160dp"
    android:text="test" />

<ImageView
    android:id="@+id/imageRemove"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:src="@android:drawable/ic_delete" />

</LinearLayout>

父布局xml

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:alignmentMode="alignBounds"
    android:columnCount="2"
    android:columnOrderPreserved="false"
    android:useDefaultMargins="true" >

    <TextView
        android:id="@+id/amountLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:text="Amount"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:orientation="horizontal" >

        <Spinner
            android:id="@+id/currency"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"/>

        <EditText
            android:id="@+id/amount"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:hint="Tap to enter amount"
            android:inputType="numberDecimal" />

    </LinearLayout>

    <TextView
        android:id="@+id/accountLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:text="Paid From"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner
        android:id="@+id/account"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_gravity="left" />

    <TextView
        android:id="@+id/categoryLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:text="Category"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner
        android:id="@+id/category"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_gravity="left" />

    <TextView
        android:id="@+id/dateLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:text="Date"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/date"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Sat 02/03/2013" />

        <ImageButton
            android:id="@+id/imageButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_menu_today" />

    </LinearLayout>

    <TextView
        android:id="@+id/noteLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:text="Note"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/note"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:ems="10"
        android:inputType="textMultiLine" />

    <TextView
        android:id="@+id/locationLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:text="Location"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="fill_horizontal" >

        <EditText
            android:id="@+id/location"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_gravity="left|bottom"
            android:ems="10" >
        </EditText>

        <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_menu_mylocation" />
    </LinearLayout>

    <TextView
        android:id="@+id/photoLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:text="Photo"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ImageView
        android:id="@+id/addImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_gravity="right"
        android:layout_row="6"
        android:src="@android:drawable/ic_input_add" />

    <Space
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:layout_row="7"
        android:layout_columnSpan="1" />

    <LinearLayout
        android:id="@+id/imageList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

    </LinearLayout>


    <Space
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:layout_row="6"
        android:layout_columnSpan="1" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="fill_horizontal" >

        <Button
            android:id="@+id/clearBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:text="Clear" />

        <Button
            android:id="@+id/saveBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:text="Save" />

    </LinearLayout>

</GridLayout>

</ScrollView>

原木猫

03-03 23:14:05.676: E/AndroidRuntime(23792): FATAL EXCEPTION: main
03-03 23:14:05.676: E/AndroidRuntime(23792): java.lang.OutOfMemoryError
03-03 23:14:05.676: E/AndroidRuntime(23792):    at  android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:445)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.graphics.drawable.Drawable.createFromStream(Drawable.java:733)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.widget.ImageView.resolveUri(ImageView.java:562)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.widget.ImageView.setImageURI(ImageView.java:340)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at com.example.expensesmanager.newExpense.onActivityResult(newExpense.java:92)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:161)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.app.Activity.dispatchActivityResult(Activity.java:4654)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2987)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3034)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.app.ActivityThread.access$1100(ActivityThread.java:127)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1188)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.os.Looper.loop(Looper.java:137)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at android.app.ActivityThread.main(ActivityThread.java:4511)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at java.lang.reflect.Method.invokeNative(Native Method)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at java.lang.reflect.Method.invoke(Method.java:511)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
03-03 23:14:05.676: E/AndroidRuntime(23792):    at dalvik.system.NativeStart.main(Native Method)

有人可以帮忙修改一些代码吗? 感谢帮助。

您的内存不足,更确切地说是堆空间不足。 您的应用程序只能使用多少堆空间-在旧的Android设备上只有16MB的空间,在高分辨率的新设备上可能只有64MB的空间。 无论是什么,您都可能在位图上使用了所有内容。

您可以使用MAT找出正在使用堆空间的位置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM