Android Activity second findViewById()调用在应用程序重新启动后返回null
我已经检查了StackOverFlow上的所有场景,但没有任何用处 简单地说,我已经实现了这个教程,它工作得非常好 我的应用程序中有不同的活动,如果应用程序崩溃并重新启动,所有这些活动都会正常重新启动。除了一个 下面是ConceptActivity.java中的(onCreate)代码Android Activity second findViewById()调用在应用程序重新启动后返回null,android,Android,我已经检查了StackOverFlow上的所有场景,但没有任何用处 简单地说,我已经实现了这个教程,它工作得非常好 我的应用程序中有不同的活动,如果应用程序崩溃并重新启动,所有这些活动都会正常重新启动。除了一个 下面是ConceptActivity.java中的(onCreate)代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
@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\u 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上找到的解决方案,只要场景相似,仍然什么都没有
有什么想法吗?提前多谢
更新
来自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)
05-24 16:02:20.356 22368-22368/com.company.appname E/art:抛出内存错误“无法分配48024300字节的分配,其中16777216个可用字节和36MB直到OOM”
05-24 16:02:20.366 22368-22368/com.company.appname E/AndroidRuntime:致命异常:main
进程:com.company.appname,PID:22368
java.lang.RuntimeException:无法启动活动组件信息{com.company.appname/com.company.appname.MenuActivity}:android.view.InflateException:二进制XML文件行#18:膨胀类时出错
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)上
在android.app.ActivityThread.access$900(ActivityThread.java:177)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:145)
位于android.app.ActivityThread.main(ActivityThread.java:5942)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
原因:android.view.InflateException:二进制XML文件行#18:膨胀类时出错
位于android.view.LayoutInflater.createView(LayoutInflater.java:640)
在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)上
位于android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
在android.view.LayoutInflater.inflate(LayoutInflater.java:511)
在android.view.LayoutInflater.充气(LayoutInflater.java:415)
在android.view.LayoutInflater.充气(LayoutInflater.java:366)
位于com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:428)
位于android.app.Activity.setContentView(Activity.java:2267)
位于com.company.appname.MenuActivity.onCreate(MenuActivity.java:31)
位于android.app.Activity.performCreate(Activity.java:6288)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)上
在android.app.ActivityThread.access$900(ActivityThread.java:177)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:145)
txtOurStory = (TextView) findViewById(R.id.txtOurMission);
txtOurVision = (TextView) findViewById(R.id.txtOurVision);