2016-12-17 27 views
-1

所以,繼承人點:當我在線性佈局中添加2個相對佈局時,應用程序崩潰 - 爲什麼?

我正在訓練,並在android開發中的第一步,我自己縮小了一些錯誤後,我終於遇到了一個,我找不到解決方案。

我想創建一個應用程序,顯示兩個圖片將屏幕水平分割成一半。所以我創建了一個垂直方向的LinearLayout,並在其中添加兩個RelativeLayout。我編譯它,構建顯然完成,但一旦應用程序嘗試啓動我的手機(三星S5 Neo),它說它停止工作,我再次登陸我的桌面。 >。 <此外,在提示相似之前 - 是的,我已經開始一個新的項目用於測試目的,並且發生了相同的錯誤。此外,當我刪除這些代碼行時,該應用在我的手機上運行良好。所以,這是我的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="removedbecausenotyourbusiness:P"> 

    <RelativeLayout 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:layout_width="match_parent"> 

     <ImageView 
      android:id="@+id/background2" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/background2" 
      android:scaleType="centerCrop"/> 
    </RelativeLayout> 

    <RelativeLayout 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_width="match_parent"> 

     <ImageView 
      android:id="@+id/background1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/background1" 
      android:scaleType="centerCrop"/> 
    </RelativeLayout> 

</LinearLayout> 

另外,我想了解,如果我能以某種方式得到我的手機日誌,爲什麼應用停止運行。我在哪裏可以得到這個?

編輯:我相信我找到你問我的。

12-17 19:27:18.751 11830-11830/? E/Zygote: v2 12-17 19:27:18.751 11830-11830/? E/Zygote: accessInfo : 0 12-17 19:27:20.211 11830-11830/com.example.marco E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.marco, PID: 11830 java.lang.OutOfMemoryError: Failed to allocate a 231444012 byte allocation with 4182352 free bytes and 125MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:675) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:2228) at android.content.res.Resources.loadDrawableForCookie(Resources.java:4211) at android.content.res.Resources.loadDrawable(Resources.java:4085) at android.content.res.Resources.loadDrawable(Resources.java:3935) at android.content.res.TypedArray.getDrawable(TypedArray.java:886) at android.widget.ImageView.(ImageView.java:157) at android.widget.ImageView.(ImageView.java:145) at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:60) at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:56) at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106) at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1021) at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1080) at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:758) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) at android.view.LayoutInflater.rInflate(LayoutInflater.java:855) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) at android.view.LayoutInflater.inflate(LayoutInflater.java:527) at android.view.LayoutInflater.inflate(LayoutInflater.java:429) at android.view.LayoutInflater.inflate(LayoutInflater.java:380) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:288) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143) at com.example.marco.MainActivity.onCreate(MainActivity.java:11) at android.app.Activity.performCreate(Activity.java:6877) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3208) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3351) at android.app.ActivityThread.access$1100(ActivityThread.java:222) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7230) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

+0

添加崩潰日誌,以便任何人容易識別 – USKMobility

+1

添加堆棧跟蹤。可能有數以千計的原因爲什麼崩潰,stacktrace告訴我們問題是什麼 – Zoe

+0

我的一個瘋狂的猜測會使用相同名稱的'drawable'和'id',嘗試更改ID的名稱 –

回答

0

下面是一些事情可以做,從你的圖像修復的OutOfMemoryError:

在AndroidManifest文件下的application頂部添加這些行:

android:hardwareAccelerated="false"

android:largeHeap="true"

因此,您的AndroidManifest的頂部會看起來像一個東西e這與兩個額外的行:

<application 
     android:hardwareAccelerated="false" //added 
     android:largeHeap="true"    //added 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 

如果這不能解決它,那麼你將需要壓縮你的圖像文件。你可以在像https://tinyjpg.com/這樣的網站上做到這一點。這可能只是你的圖片太大的問題!

另外,如果您遇到類似問題,則需要使用您在崩潰日誌/堆棧跟蹤中收到的錯誤並搜索解決方案。在你的情況下,你可能已經發現:Android:java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM

+0

這是一個解決方案,而不是解決方案 – Zoe

+0

真的..我想正確的方法是用像畢加索這樣的圖像庫。 –

+0

這可能是一個解決方案。另一種解決方案是縮小圖像大小,因爲加載小型ic-launcher不會導致應用程序崩潰。所以圖像可能很大。不知道畢加索做​​了什麼,但它可能是一種解決方案,而不是解決方法 – Zoe

相關問題