Java 使用ArrayList时出现NullPointerException<;字符串>;
在下面给定的代码中,当我包含for block以便在ArrayAdapter构造函数中使用ArrayList单词时,我得到了Java 使用ArrayList时出现NullPointerException<;字符串>;,java,nullpointerexception,runtime-error,Java,Nullpointerexception,Runtime Error,在下面给定的代码中,当我包含for block以便在ArrayAdapter构造函数中使用ArrayList单词时,我得到了NullPointerException。但是,如果我删除块的,而是使用字符串数组strArray,它就可以正常工作 谁能告诉我为什么会这样 import java.util.ArrayList; import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter
NullPointerException
。但是,如果我删除块的,而是使用字符串数组strArray,它就可以正常工作
谁能告诉我为什么会这样
import java.util.ArrayList;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import com.actionbarsherlock.app.SherlockListFragment;
public class ShowList extends SherlockListFragment
{
private static final String[] strArray={"this","one","is","an","experimental","list"};
ArrayList<String> words;
ArrayAdapter<String> adapter;
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
for(String s: strArray)
{
words.add(s);
}
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,words);
Log.d("Action","before setListAdapter");
setListAdapter(adapter);
}
import java.util.ArrayList;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.ArrayAdapter;
导入com.actionbarsherlock.app.SherlockListFragment;
公共类ShowList扩展了SherlockListFragment
{
私有静态最终字符串[]strArray={“this”、“one”、“is”、“an”、“experimental”、“list”};
ArrayList词;
阵列适配器;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
用于(字符串s:strArray)
{
字。加上(s);
}
adapter=newarrayadapter(getActivity(),android.R.layout.simple\u list\u item\u 1,words);
Log.d(“操作”,“在setListAdapter之前”);
setListAdapter(适配器);
}
工作正常的代码如下:
public class ShowList extends SherlockListFragment
{
private static final String[] strArray={"this","one","is","an","experimental","list"};
ArrayList<String> words;
ArrayAdapter<String> adapter;
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
/* for(String s: strArray)
{
words.add(s);
}
*/
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,strArray);
Log.d("Action","before setListAdapter");
setListAdapter(adapter);
}
public类ShowList扩展了SherlockListFragment
{
私有静态最终字符串[]strArray={“this”、“one”、“is”、“an”、“experimental”、“list”};
ArrayList词;
阵列适配器;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
/*用于(字符串s:strArray)
{
字。加上(s);
}
*/
adapter=newarrayadapter(getActivity(),android.R.layout.simple\u list\u item\u 1,strArray);
Log.d(“操作”,“在setListAdapter之前”);
setListAdapter(适配器);
}
}您需要初始化对象单词
words= new ArrayList<String>();
words=newarraylist();
单词
是单位化的,但您可以向其中添加对象
你必须这样做
words = new ArryList<String>();
words=newarrylist();
在你进入循环之前
我会习惯于声明这样一个变量
List<String>words
列表词
而不是
ArrayList<String>words.
ArrayListwords。
List
在接口中,您可以将任意列表传递给其他函数,但如果您特别指定了ArrayList
,则只能传递此类列表。不过,对于此exmaple,这并不重要。初始化ArrayList单词;首先:
private ArrayList<String> words = new ArrayList<String>();
似乎未编译。请将其更改为:
private static final String[] strArray = {"this", "one", "is", "an", "experimental", "list"};
哦…谢谢。第二个问题是打字错误。谢谢你指出。我已经做了必要的修改。。
private static final String[] strArray = {"this", "one", "is", "an", "experimental", "list"};