2017-05-24 37 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

相关问题