listview-Android处理程序出现NullPointerException错误

问题描述

Android处理程序出现NullPointerException错误

我在Activity中创建了一个新的Thread。通过输入流,run()方法获取vector对象。现在我想在名称为direc的ListView中显示vector对象的内容。但是程序没有正常运行,抛出了异常。
相关的代码如下:

public class FileExplorerActivity extends Activity implements Runnable
{
    public static final String TAG="ricky";
    Vector<String> dirs = new Vector<String>();
    ListView direc;
    static ArrayAdapter<String> arrayAdapter;
    Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fileexplorer);
        direc = (ListView) findViewById(R.id.directoriesss);
        handler = new Handler();
        Thread thread = new Thread(this);
        thread.start();
    }

    public FileExplorerActivity()
    {

    }

    public void run()
    {
        Log.d(TAG, "FileExplorer: Thread started");
        try
        {
            Log.d(TAG, "FileExplorer: reading data");
            dirs = (Vector<String>) ConnectionThread.din.readObject();
            Log.d(TAG, "FileExplorer: read data");
            arrayAdapter = new ArrayAdapter<String>(this,
                                     android.R.layout.activity_list_item,
                                     android.R.id.text2 , dirs);
            Log.d(TAG, "FileExplorer: ArrayAdapter created");

            handler.post( new Runnable() {
                public void run()
                {
                    Log.d(TAG, "FileExplorer: In handler Thread");
                    direc.setAdapter(arrayAdapter);
                    Log.d(TAG, "FileExplorer: Updated UI");
                }
            });

            Log.d(TAG, "FileExplorer: Directory set");
        }catch (Exception e) {
            Log.d(TAG, "FileExplorerActivity: Exception:"+e.getMessage());
        }
    }
}

Logcat的错误:

> 1. 12-20 20:14:46.601  7759  7834 D ricky   : FileExplorer: Thread started
> 2. 12-20 20:14:46.601  7759  7834 D ricky   : FileExplorer: reading data
> 3. 12-20 20:14:46.648  7759  7834 D ricky   : FileExplorer: read data
> 4. 12-20 20:14:46.648  7759  7834 D ricky   : FileExplorer: ArrayAdapter created
> 5. 12-20 20:14:46.648  7759  7834 D ricky   : FileExplorer: Directory set
> 6. 12-20 20:14:46.656  7759  7759 D ricky   : FileExplorer: In handler Thread
> 7. 12-20 20:14:46.656  7759  7759 D ricky   : FileExplorer: Updated UI
> 8. 12-20 20:14:46.664  7759  7759 D AndroidRuntime: Shutting down VM
> 9. 12-20 20:14:46.664  7759  7759 W dalvikvm: threadid=1: thread exiting with uncaught 10. exception (group=0x4001e560)
> 11. 12-20 20:14:46.687  7759  7759 E AndroidRuntime: FATAL EXCEPTION: main
> 12. 12-20 20:14:46.687  7759  7759 E AndroidRuntime: java.lang.NullPointerException
> 13. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:353)
> 14. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
> 15. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.AbsListView.obtainView(AbsListView.java:1456)
> 16. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.ListView.measureHeightOfChildren(ListView.java :1291)
> 17. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.ListView.onMeasure(ListView.java:1202)
> 18. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.View.measure(View.java:8355)
> 19. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java :3279)
> 20. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
> 21. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.LinearLayout.measureHorizontal(LinearLayout.ja va:701)
> 22. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.LinearLayout.onMeasure(LinearLayout.java:311)
> 23. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.View.measure(View.java:8355)
> 24. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java :3279)
> 25. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
> 26. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.View.measure(View.java:8355)
> 27. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.LinearLayout.measureVertical(LinearLayout.java :531)
> 28. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
> 29. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.View.measure(View.java:8355)
> 30. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java :3279)
> 31. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
> 32. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.View.measure(View.java:8355)
> 33. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.ViewRoot.performTraversals(ViewRoot.java:882)
> 34. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.view.ViewRoot.handleMessage(ViewRoot.java:1917)
> 35. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
> 36. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:130)
> 37. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:3859)
> 38. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at java.lang.reflect.Method.invokeNative(Native Method)
> 39. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Method.java:507)
> 40. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
> 41. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
> 42. 12-20 20:14:46.687  7759  7759 E AndroidRuntime:        at dalvik.system.NativeStart.main(Native Method)

解决方案

注意引起NullPointerException错误的这一行:

android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:353)

这是因为android.R.layout.activity_list_item不包含android.R.id.text2
你可以使用android.R.id.text1,或者使用simple_list_item_2来代替行布局。

解决方案二:

arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item,
        android.R.id.text2 , dirs);

把run()方法中的这段代码移除,就会在UI线程中运行。你不能在UI线程外创建ArrayAdapter。

时间: 2024-08-23 20:47:19

listview-Android处理程序出现NullPointerException错误的相关文章

Android 中读取SD卡文件时抛出NullPointerException错误解决办法

Android 中读取SD卡文件时抛出NullPointerException错误解决办法 相关源码: package com.example.musicplayer; import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import

android fragement报nullexcption错误

       ,这题目起的够骚情了,原创傲慢的上校哦,转载请标明:http://blog.csdn.net/aomandeshangxiao/article/details/7753421 其实有些方法也是从网上找来的,拿来主义,共同分享下(Fragment其他资料:android之Fragment(官网资料翻译)). 第一个错误:FragmentManagerImpl.saveFragmentBasicState 下面是log:          [java] view plaincopy E

openfileoutput-Android文件存取openFileOutput方法报NullPointerException错误

问题描述 Android文件存取openFileOutput方法报NullPointerException错误 public class FileService { private Context context; public void save(String filename, String filecontent) throws Exception { //Context.MODE_PRIVATE,文件私有保存模式.保存的文件不能被其他应用所访问,而且以覆盖的形式保存文件 FileOutp

android clean时出现错误

问题描述 android clean时出现错误 项目没有问题,项目用过引用过了4个库, 求解??? Errors occurred during the build.Errors running builder 'Android Package Builder' on project 'android-support-v7-appcompat'.Problems encountered while deleting resources.Could not delete 'D:workspacea

android studio的这个错误怎么解决???

问题描述 android studio的这个错误怎么解决??? Error:Execution failed for task ':app:transformClassesWithInstantRunForDebug'. java.lang.ClassNotFoundException: io.rong.imlib.model.UserInfo 解决方案 Gradle: Execution failed for task ':processDebugManifest' ?http://stack

接口-com.android.volley.ServerError 这个错误是怎么回事

问题描述 com.android.volley.ServerError 这个错误是怎么回事 如题所示,安卓调用接口,网页访问都是正常,但是在安卓端就报这个错误,求解! 解决方案 您好 ,我也遇到一样的问题,请问您当初是怎么解决的?? 解决方案二: 我应该不是楼上的问题,题主的问题是什么呢? 解决方案三: 你访问得到的对象是jsonobject但是你是用jsarray请求的 解决方案四: 楼主的问题解决了没有,表示也遇到了同样的问题? 解决方案五: 服务器端错误啊,应该是服务器端的问题.跟网页请求

Android java代码有错误,获取的list一直为0,问题出在哪里

问题描述 Android java代码有错误,获取的list一直为0,问题出在哪里 package com.example.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Intent; import android.content.

android studio自定义方法出现错误

问题描述 android studio自定义方法出现错误 例如我创建的每个方法都会有小波浪线 这个要怎么办??上面的类文件还有红色的波浪线,我发现出问题的都是自己创建的方法android studio不能识别..怎么解决这样的问题??? 解决方案 用http://www.jb51.net/softjc/408173.html 的方法创建下看看检查是否有重名或者别的错误

大侠,android studio出现这个错误怎么解决!?

问题描述 大侠,android studio出现这个错误怎么解决!? 解决方案 资源没有找到,看下资源文件 解决方案二: Android Studio错误Android Studio 运行时出现的错误及解决办法关于android studio启动时加载项目gradle build出现错误的解决方法 解决方案三: 看起来像是v7包报错了,重新创建一个项目试试. 解决方案四: android对应的API版本的问题 解决方案五: V7包没有找到或V7包版本太低了