【问题标题】:Android Studio crashes when using adapter and background gradient color使用适配器和背景渐变颜色时 Android Studio 崩溃
【发布时间】:2015-07-26 21:26:13
【问题描述】:

当我将背景渐变颜色与适配器一起使用时,应用程序会崩溃。当我将背景颜色更改为简单的颜色时(例如 android:background="@color/blueLgt") - 没有崩溃,或者当我评论 setAdapter() 方法时。我做错了什么?

这是测试应用程序:

MainActivity.java

package ...mylistview;

import (...)

public class MainActivity extends ActionBarActivity {

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

    String[]  myStringArray={"A","B","C"};
    ArrayAdapter<String> myAdapter = new
            ArrayAdapter<String>(
            this,
            android.R.layout.simple_list_item_1,
            myStringArray);

    ListView myList=(ListView)
            findViewById(R.id.listView);

    myList.setAdapter(myAdapter);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

Activity_Main.xml

<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"

android:background="@drawable/gradient_blue"

android:id="@+id/MainActivity"
tools:context=".MainActivity">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

drawable/gradient_blue.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<gradient
    android:startColor="@color/blueMed"
    android:centerColor="@color/blueLgt"
    android:endColor="@color/blueMed"
    android:angle="90">
</gradient>
</shape>

分类日志

07-26 22:51:08.050      656-656/? I/art﹕ Not late-enabling -Xcheck:jni (already on)
07-26 22:51:08.130      656-663/? I/art﹕ Debugger is no longer active
07-26 22:51:08.150      656-663/? W/art﹕ Suspending all threads took: 20ms
    --------- beginning of crash
07-26 22:51:08.160      656-656/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: il.co.talkie.mylistview, PID: 656
    java.lang.RuntimeException: Unable to start activity ComponentInfo{il.co.talkie.mylistview/il.co.talkie.mylistview.MainActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class android.widget.RelativeLayout
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            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:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class android.widget.RelativeLayout
            at android.view.LayoutInflater.createView(LayoutInflater.java:633)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
            at il.co.talkie.mylistview.MainActivity.onCreate(MainActivity.java:16)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            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:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     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:607)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
            at il.co.talkie.mylistview.MainActivity.onCreate(MainActivity.java:16)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            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:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/gradient_blue.xml from drawable resource ID #0x7f02003b
            at android.content.res.Resources.loadDrawableForCookie(Resources.java:2479)
            at android.content.res.Resources.loadDrawable(Resources.java:2381)
            at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
            at android.view.View.<init>(View.java:3737)
            at android.view.ViewGroup.<init>(ViewGroup.java:497)
            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 java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
            at il.co.talkie.mylistview.MainActivity.onCreate(MainActivity.java:16)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            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:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x1
            at android.content.res.TypedArray.getColor(TypedArray.java:404)
            at android.graphics.drawable.GradientDrawable.updateGradientDrawableGradient(GradientDrawable.java:1323)
            at android.graphics.drawable.GradientDrawable.inflateChildElements(GradientDrawable.java:1176)
            at android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:1019)
            at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1128)
            at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1032)
            at android.content.res.Resources.loadDrawableForCookie(Resources.java:2469)
            at android.content.res.Resources.loadDrawable(Resources.java:2381)
            at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
            at android.view.View.<init>(View.java:3737)
            at android.view.ViewGroup.<init>(ViewGroup.java:497)
            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 java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
            at il.co.talkie.mylistview.MainActivity.onCreate(MainActivity.java:16)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            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:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
07-26 22:51:44.760      656-663/il.co.talkie.mylistview W/art﹕ Suspending all threads took: 10ms

【问题讨论】:

  • 从 logcat 发布完整的堆栈跟踪
  • 这些只是您的 logcat 中的随机行。您需要运行应用程序,使其崩溃,并在崩溃时找到异常的堆栈跟踪。哪些行引用了崩溃应该非常明显。
  • 我无法加载目录日志。希望以上内容没问题,否则你能向我解释一下,我能找到关于如何理解 catlog 的解释

标签: android background crash adapter gradient


【解决方案1】:

问题已解决: 从 logcat 我看到问题是由于 setAdapter() 方法中有一个空对象。我在创建 myAdapter 后添加了一个空对象检查,它不为空。然后我在该行之后添加了一个空对象检查 ListView myList=(ListView) findViewById(R.id.listView); myList 为空。检查布局的 xml 文件显示对象 id 是 listView2 而不是 listView。改变它并解决问题。 与适配器或渐变背景无关。 感谢 Karakuri 指点我查看目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 2012-03-15
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2018-11-25
    相关资源
    最近更新 更多