2017-05-24 41 views
0

我檢查了StackOverFlow上的所有場景,但沒有用處。重新啓動應用程序後,第二次findViewById()調用返回null

簡單地說,我已經實施了這個auto-restart after crash教程,它完美的工作。

我在我的應用程序中有不同的活動,如果應用程序崩潰並重新啓動,它們都會正常重新啓動。除了一個。

這裏的(的onCreate)在ConceptActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_concept); 

    txtOurStory = (TextView) findViewById(R.id.txtOurStory); 
    txtOurVision = (TextView) findViewById(R.id.txtOurVision); 

    MyConfig config = Web.getConfig(); //retrieve data from server 

    txtOurStory.setText(config.ConceptStory); 
    txtOurVision.setText(config.ConceptVision);  
} 

activity_concept.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <TextView 
       android:id="@+id/txtOurStory" 
       style="@style/concept_text" /> 

      <TextView 
       android:id="@+id/txtOurVision" 
       style="@style/concept_text" /> 

     </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 

代碼工作完全在第一次運行,但如果從崩潰重啓,findviewbyid返回null ..我在其他活動中使用確切的步驟/代碼,並沒有發生。我嘗試了幾乎所有在stackoverflow上發現的解決方案,無論場景是否相似,仍然沒有任何結果。

有什麼想法?在此先感謝

UPDATE

錯誤很多來自logcat的

05-24 16:02:20.356 22368-22368/com.company.appname E/art: Throwing OutOfMemoryError "Failed to allocate a 48024300 byte allocation with 16777216 free bytes and 36MB until OOM" 
05-24 16:02:20.366 22368-22368/com.company.appname E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.company.appname, PID: 22368 
                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company.appname/com.company.appname.MenuActivity}: android.view.InflateException: Binary XML file line #18: Error inflating class <unknown> 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758) 
                      at android.app.ActivityThread.access$900(ActivityThread.java:177) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:145) 
                      at android.app.ActivityThread.main(ActivityThread.java:5942) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
                     Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class <unknown> 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:640) 
                      at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:428) 
                      at android.app.Activity.setContentView(Activity.java:2267) 
                      at com.company.appname.MenuActivity.onCreate(MenuActivity.java:31) 
                      at android.app.Activity.performCreate(Activity.java:6288) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)  
                      at android.app.ActivityThread.access$900(ActivityThread.java:177)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:145)  
                      at android.app.ActivityThread.main(ActivityThread.java:5942)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at java.lang.reflect.Method.invoke(Method.java:372)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)  
                     Caused by: java.lang.reflect.InvocationTargetException 
                      at java.lang.reflect.Constructor.newInstance(Native Method) 
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:614) 
                      at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)  
                      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)  
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)  
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:511)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:415)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:366)  
                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:428)  
                      at android.app.Activity.setContentView(Activity.java:2267)  
                      at com.company.appname.MenuActivity.onCreate(MenuActivity.java:31)  
                      at android.app.Activity.performCreate(Activity.java:6288)  
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)  
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)  
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)  
                      at android.app.ActivityThread.access$900(ActivityThread.java:177)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:145)  
                      at android.app.ActivityThread.main(ActivityThread.java:5942)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at java.lang.reflect.Method.invoke(Method.java:372)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)  
                     Caused by: java.lang.OutOfMemoryError: Failed to allocate a 48024300 byte allocation with 16777216 free bytes and 36MB until OOM 
                      at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
                      at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
                      at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:726) 
                      at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:547) 
                      at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1014) 
                      at android.content.res.Resources.loadDrawableForCookie(Resources.java:3747) 
                      at android.content.res.Resources.loadDrawable(Resources.java:3620) 
                      at android.content.res.TypedArray.getDrawable(TypedArray.java:762) 
                      at android.widget.ImageView.<init>(ImageView.java:151) 
                      at android.widget.ImageView.<init>(ImageView.java:140) 
                      at android.widget.ImageView.<init>(ImageView.java:136) 
                      at java.lang.reflect.Constructor.newInstance(Native Method)  
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:288)  
                      at android.view.LayoutInflater.createView(LayoutInflater.java:614)  
                      at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)  
                      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)  
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)  
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:511)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:415)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:366)  
                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:428)  
                      at android.app.Activity.setContentView(Activity.java:2267)  
                      at com.company.appname.MenuActivity.onCreate(MenuActivity.java:31)  
                      at android.app.Activity.performCreate(Activity.java:6288)  
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)  
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)  
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)  
                      at android.app.ActivityThread.access$900(ActivityThread.java:177)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:145)  
                      at android.app.ActivityThread.main(ActivityThread.java:5942)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at java.lang.reflect.Method.invoke(Method.java:372)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)  
+0

把這裏的堆棧跟蹤這裏 –

+0

POST錯誤 – Amy

+0

在該XML佈局沒有txtOurStory ID,這可能會導致findviewbyid返回NULL – peshkira

回答

0

似乎因爲我下面@ PRASHANT的意見/建議,這個問題從來沒有發生過:

這是內存溢出異常,你需要分析爲什麼您的應用程序 正在使用太多內存,並在您不需要它時嘗試釋放它們。 分析內存堆。我想有可能在行 沒有通過MenuActivity.java使用這可能是解決大18圖像中佈局..

我沒有經過我的應用程序,改變了導致這種異常的圖像加載庫,所以該應用程序從未崩潰,因此我無法弄清楚這是否是解決問題的辦法。但它似乎是。

0

txtOurStory ID是不是在佈局文件中。

確保您在Java中使用的所有ID必須在佈局文件中可用。

+0

對不起,我複製了舊版本的代碼,這不是問題。我編輯我的問題 – user1313

0

改變這一行ID錯誤

txtOurStory = (TextView) findViewById(R.id.txtOurMission); 
txtOurVision = (TextView) findViewById(R.id.txtOurVision); 
+0

對不起我複製了舊版本的代碼,這不是問題,我編輯了我的問題 – user1313

相關問題