【问题标题】:Error on starting new activity(android)启动新活动时出错(android)
【发布时间】:2016-07-07 14:08:30
【问题描述】:

昨天我做了一个简单的应用程序;所以,当我按下按钮时,新的活动(Activity2Main)应该开始。 昨天它工作正常,我很高兴。一切都很棒。 今天,我尝试运行应用程序,我看到了什么?当我按下按钮时,我看到了崩溃并关闭应用程序消息。 会是什么? 这是来自控制台的日志:

E / AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dns.politicalscience, PID: 2076
java.lang.RuntimeException: Unable to start activity ComponentInfo {
        com.example.dns.politicalscience / com.example.dns.politicalscience.Main2Activity
    }: android.view.InflateException: Binary XML file line #2: Binary XML file line # 2: Error inflating class < unknown >
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2476)
at android.app.ActivityThread. - wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1344)
at android.os.Handler.dispatchMessage(Handler.java: 102)
at android.os.Looper.loop(Looper.java: 148)
at android.app.ActivityThread.main(ActivityThread.java: 5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 616)
Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line # 2: Error inflating class < unknown >
    at android.view.LayoutInflater.inflate(LayoutInflater.java: 539)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 423)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java: 267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java: 129)
at com.example.dns.politicalscience.Main2Activity.onCreate(Main2Activity.java: 11)
at android.app.Activity.performCreate(Activity.java: 6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2476)
at android.app.ActivityThread. - wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1344)
at android.os.Handler.dispatchMessage(Handler.java: 102)
at android.os.Looper.loop(Looper.java: 148)
at android.app.ActivityThread.main(ActivityThread.java: 5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 616)
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java: 645)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java: 58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java: 694)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java: 762)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java: 704)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 492)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 423)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java: 267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java: 129)
at com.example.dns.politicalscience.Main2Activity.onCreate(Main2Activity.java: 11)
at android.app.Activity.performCreate(Activity.java: 6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2476)
at android.app.ActivityThread. - wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1344)
at android.os.Handler.dispatchMessage(Handler.java: 102)
at android.os.Looper.loop(Looper.java: 148)
at android.app.ActivityThread.main(ActivityThread.java: 5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 616)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java: 619)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java: 58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java: 694)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java: 762)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java: 704)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 492)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 423)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java: 267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java: 129)
at com.example.dns.politicalscience.Main2Activity.onCreate(Main2Activity.java: 11)
at android.app.Activity.performCreate(Activity.java: 6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2476)
at android.app.ActivityThread. - wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1344)
at android.os.Handler.dispatchMessage(Handler.java: 102)
at android.os.Looper.loop(Looper.java: 148)
at android.app.ActivityThread.main(ActivityThread.java: 5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 616)
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 44728332 byte allocation with 4194304 free bytes and 9 MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java: 609)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java: 444)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java: 1080)
at android.content.res.Resources.loadDrawableForCookie(Resources.java: 2635)
at android.content.res.Resources.loadDrawable(Resources.java: 2540)
at android.content.res.TypedArray.getDrawable(TypedArray.java: 870)
at android.view.View. < init > (View.java: 3948)
at android.view.ViewGroup. < init > (ViewGroup.java: 573)
at android.widget.RelativeLayout. < init > (RelativeLayout.java: 248)
at android.widget.RelativeLayout. < init > (RelativeLayout.java: 244)
at android.widget.RelativeLayout. < init > (RelativeLayout.java: 240)
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java: 619)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java: 58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java: 694)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java: 762)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java: 704)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 492)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 423)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java: 267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java: 129)
at com.example.dns.politicalscience.Main2Activity.onCreate(Main2Activity.java: 11)
at android.app.Activity.performCreate(Activity.java: 6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2476)
at android.app.ActivityThread. - wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1344)
at android.os.Handler.dispatchMessage(Handler.java: 102)
at android.os.Looper.loop(Looper.java: 148)
at android.app.ActivityThread.main(ActivityThread.java: 5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 616)

我的 Manifest.xml 文件如下所示:

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

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Main2Activity"></activity>
</application>

这是我的 activity1.xml:

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/canbe_backgroud"
    tools:context="com.example.dns.politicalscience.MainActivity"
    android:onClick="onClickBackground">

    <ImageButton
        android:layout_width="55mm"
        android:layout_height="20mm"
        android:id="@+id/imageButton"
        android:background="@drawable/start_button"
        android:cropToPadding="false"
        android:clickable="true"
        android:onClick="onClickObama"
        android:nestedScrollingEnabled="false" />

    <ImageButton
        android:layout_width="55mm"
        android:layout_height="20mm"
        android:id="@+id/imageButton2"
        android:layout_below="@+id/imageButton"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:background="@drawable/idea_button"

        android:clickable="true" />

    <ImageButton
        android:layout_width="55mm"
        android:layout_height="20mm"
        android:id="@+id/imageButton3"
        android:layout_below="@+id/imageButton2"
        android:background="@drawable/about_botton"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:clickable="true"
        android:onClick="onClickAbout" />
</RelativeLayout>

Here's second activityxml:

        <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:background="@drawable/canbe_backgroud"
        tools:context="com.example.dns.politicalscience.Main2Activity">

    </RelativeLayout>

我在我的代码中没有发现任何错误,即使在 java 中也是如此 这是第一个活动中的java代码onClick:

 public void onClickAbout(View view) {
    Intent intent = new Intent(this, Main2Activity.class);
    startActivity(intent);
}

这是第二个:

public class Main2Activity extends AppCompatActivity {

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

}

发生了什么事,伙计们?昨天在模拟器上运行良好,但今天它显示崩溃消息。

【问题讨论】:

  • 如果你仔细检查堆栈跟踪,你会看到Caused by: java.lang.OutOfMemoryError: Failed to allocate a 44728332 byte allocation with 4194304 free bytes and 9MB until OOM——这有帮助吗?
  • 所以,问题是,因为我的模拟器没有内存,对吧?
  • 您似乎正在尝试分配一个只有 4MB 可用空间的 44MB 对象。
  • 我应该怎么做才能解决内存问题?
  • 弄清楚你为什么要发送一个 44MB 的对象图,然后不要那样做。

标签: java android xml


【解决方案1】:

正如 cmets 指出的,它是一个 OutOfMemoryError。

尝试在清单文件中使用 largeHeap。

<Application
..............
android:largeHeap="true"
............../>

无论如何,它是由您尝试加载的一些大位图引起的,请检查您的资源。

【讨论】:

    【解决方案2】:

    增加分配给模拟器的内存大小...

    这是一种从 Andriod studio 1.2.0 中找到为模拟器操作堆大小的选项的方法

    1. 菜单工具->Android->AVD 管理器

    2. 编辑选择的虚拟设备

    3. 点击高级设置并向下滚动

    【讨论】:

      【解决方案3】:

      正如其他人提到的以及您的 logcat 显示的那样,您的内存不足。您在图像按钮中使用的可绘制对象太大(或一起分配了大量内存)。

      首先,尝试使用您电脑上的图像编辑器压缩图像。然后用新的压缩图像覆盖旧图像。

      然后,确保如果您在虚拟机上运行它,请按照@Randhawa 所说的步骤操作。

      在这些事情之后,执行以下操作:

      如此处所述有效地加载您的位图(在“将缩小的版本加载到内存中”部分):http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap

      然后像这样将位图转换为可绘制对象:

      Drawable d = new BitmapDrawable(getResources(), bitmap);
      

      并在 setContent (您的活动的 xml)之后的 onCreate 中以编程方式设置您的图像按钮背景:

      ImageButton imgButton = (ImageButton) findViewById(R.id.imageButton); 
      int sdk = android.os.Build.VERSION.SDK_INT;
       if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN){ 
          imgButton.setBackgroundDrawable(d); 
      // where d is your Drawable 
      } 
      else{
       imgButton.setBackground(d);
       }
      

      对图像按钮 2 和 3 执行相同操作。

      【讨论】:

        猜你喜欢
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 2013-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多