这个logcat日志是什么意思?

发布于 2024-10-24 08:01:04 字数 5927 浏览 6 评论 0原文

当我尝试访问包含所有已保存数据(在文件中)的列表视图时,我遇到了 FC,这是 logcat:

03-20 22:43:33.686: ERROR/AndroidRuntime(5315): FATAL EXCEPTION: main
03-20 22:43:33.686: ERROR/AndroidRuntime(5315): java.lang.NullPointerException
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.AbsListView.obtainView(AbsListView.java:1430)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.makeAndAddView(ListView.java:1745)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.fillDown(ListView.java:670)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.fillFromTop(ListView.java:727)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.layoutChildren(ListView.java:1598)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.AbsListView.onLayout(AbsListView.java:1260)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1140)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.os.Looper.loop(Looper.java:123)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at java.lang.reflect.Method.invokeNative(Native Method)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at java.lang.reflect.Method.invoke(Method.java:507)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at dalvik.system.NativeStart.main(Native Method)

list_item.xml:

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

 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="13sp" >
</TextView>

histo.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:layout_weight="1"
    android:id="@+id/ViewHisto">
    <ListView android:id="@+id/lv" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_weight="1" />
</LinearLayout>

访问 ListView 的函数:

public void updatelv(Activity activity) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        String fileName = getResources().getString(R.string.fileName);
        fileDir = "" + preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";
        s = myIO.ReadFilePerLine(getApplicationContext(), fileDir+fileName);
            updatelv(this);
        ListView L = (ListView) findViewById(R.id.lv);
        L.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, s));
        }

Oncreate func:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.histo);
        context = getApplicationContext();
        activity = this;
        final SharedPreferences preferences = PreferenceManager
                .getDefaultSharedPreferences(context);
        String fileName = getResources().getString(R.string.fileName);
        fileDir = "" + preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";
        s = myIO.ReadFilePerLine(getApplicationContext(), fileDir + fileName);
        updatelv(this);
        ListView L = (ListView) findViewById(R.id.lv);
        L.setTextFilterEnabled(true);
.........

这是什么到底是什么意思?这是 XML 问题吗? 谢谢 :)。

I'm facing a FC when i try to access to a listview containing all my saved datas(in a file), here is the logcat:

03-20 22:43:33.686: ERROR/AndroidRuntime(5315): FATAL EXCEPTION: main
03-20 22:43:33.686: ERROR/AndroidRuntime(5315): java.lang.NullPointerException
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.AbsListView.obtainView(AbsListView.java:1430)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.makeAndAddView(ListView.java:1745)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.fillDown(ListView.java:670)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.fillFromTop(ListView.java:727)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.ListView.layoutChildren(ListView.java:1598)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.AbsListView.onLayout(AbsListView.java:1260)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.View.layout(View.java:7175)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1140)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.os.Looper.loop(Looper.java:123)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at java.lang.reflect.Method.invokeNative(Native Method)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at java.lang.reflect.Method.invoke(Method.java:507)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):     at dalvik.system.NativeStart.main(Native Method)

list_item.xml:

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

 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="13sp" >
</TextView>

histo.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:layout_weight="1"
    android:id="@+id/ViewHisto">
    <ListView android:id="@+id/lv" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_weight="1" />
</LinearLayout>

Function that accesses to the ListView:

public void updatelv(Activity activity) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        String fileName = getResources().getString(R.string.fileName);
        fileDir = "" + preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";
        s = myIO.ReadFilePerLine(getApplicationContext(), fileDir+fileName);
            updatelv(this);
        ListView L = (ListView) findViewById(R.id.lv);
        L.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, s));
        }

Oncreate func:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.histo);
        context = getApplicationContext();
        activity = this;
        final SharedPreferences preferences = PreferenceManager
                .getDefaultSharedPreferences(context);
        String fileName = getResources().getString(R.string.fileName);
        fileDir = "" + preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";
        s = myIO.ReadFilePerLine(getApplicationContext(), fileDir + fileName);
        updatelv(this);
        ListView L = (ListView) findViewById(R.id.lv);
        L.setTextFilterEnabled(true);
.........

What this exactly means ? Is this an XML problem ?
Thanks :).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

弃爱 2024-10-31 08:01:05

您的 TextView 缺少 id。您需要给它一个像

android:id="@+id/text"

这样的 id并创建像 ArrayAdapter 这样

L.setAdapter(new ArrayAdapter<String>(this, R.id.text, s));

的 ArrayAdapter 构造函数期望资源是 TextView 的 id,而不是布局。因此,对于您当前的代码,在 ArrayAdapter 中,它正在执行类似的操作

TextView tv = (TextView) findViewById(R.layout.list_item);

,并且 tv 为 null,因为它不是布局。

Your TextView is missing an id. You need to give it an id like

android:id="@+id/text"

and create the ArrayAdapter like

L.setAdapter(new ArrayAdapter<String>(this, R.id.text, s));

That ArrayAdapter constructor expects the resource to be an id of a TextView, not a layout. So with your current code, in ArrayAdapter it is doing something like

TextView tv = (TextView) findViewById(R.layout.list_item);

and tv is null since its not a layout.

朕就是辣么酷 2024-10-31 08:01:05

您可以在android源代码中查找相应的行 此处

如果您正在构建不同的版本,它可能会有所不同,但对于 2.3.3,这意味着它在尝试设置相应 TextView 的文本时返回 NPE:

354  } else {
355  text.setText(item.toString());
356  }

可能与 xml 相关,但据我所知,唯一的错误标记为编译时间。 ListView 在您膨胀之后、ArrayAdapter 尝试编辑它之前是否有效?

You can look for the corresponding line in the android source here.

It may vary if you're building for a different version, but for 2.3.3 it means it's returning a NPE when trying to set the text of the corresponding TextView:

354  } else {
355  text.setText(item.toString());
356  }

Could be xml related, though AFAIK the only errors with that are marked at compile time. Is the ListView valid after you've inflated it, and before the ArrayAdapter attempts to edit it?

白日梦 2024-10-31 08:01:05

我遇到了同样的错误,在我的情况下,ArrayAdapter 创建列表所需的对象数组未正确填充。因此,当 Android 尝试用数组中的数据填充 ListView 并且数组中的一个对象为 null 时,就会引发异常。
因此,请确保传递给 ArrayAdapter 的“s”已正确创建并且不包含任何“损坏”数据。

I had the same error and in my case the array of objects the ArrayAdapter needs to create the list was not filled up properly. So when Android is trying to fill the ListView with the data from the array and one object inside the array is null the exception is thrown.
So make sure the "s" you pass to the ArrayAdapter is created properly and does not contain any "corrupt" data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文