我正在开发一个应用程序,我必须从arraylist obj
生成随机值,并将生成的值保存到rndmObj
arraylist。然后,我需要在屏幕上的多行文字视图rndmObj
中显示tvObjectList1
的所有值。但是在打开应用程序时,它崩溃了“不幸的是应用程序已关闭。”的常见消息。
我知道代码存在某些问题。所以logcat没有帮助。
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.level);
prepareObjList();
randObjFunc();
}}
private void prepareObjList() {
// TODO Auto-generated method stub
//adding string values to arrayList for tvObjectList1
obj = new ArrayList<String>();
obj.add("bowTie");
obj.add("key");
obj.add("grosshoper");
//adding imageViews to objImg arrayList
objImg = new ArrayList<Integer>();
objImg.add(R.drawable.level1_bowtie);
objImg.add(R.drawable.level1_key);
objImg.add(R.drawable.level1_grasshopper);
}
final Random randomGenerator = new Random();
ArrayList<String>obj;
ArrayList<String>rndmObj;
public String item=null;
private void randObjFunc(){
int index=0;
while(index <10){
item = obj.get(randomGenerator.nextInt(obj.size()));
rndmObj.add(index, item);
obj.remove(obj.indexOf(item));
index++;
}
dispRndmObj();
}
private void dispRndmObj(){
for (int i=0; i<rndmObj.size();i++){
((TextView) findViewById(R.id.tvObjectList1))
.setText(rndmObj.get(i).toString());
}
}
没有语法错误和应用安装完美。所有初始化都是由所有变量,arraylists等完成的 我希望快速提供一些有用的建议,指导和代码片段。
答案 0 :(得分:0)
你有没有初始化obj和rndmObj?
尝试
ArrayList<String> obj = new ArrayList<>();
ArrayList<String> rndmObj = new ArrayList<>();
另外
randomGenerator.nextInt(obj.size())
如果obj为空,将抛出IllegalArgumentException(例如,因为你从未填充它,你似乎没有。)
答案 1 :(得分:0)
嗯,您的代码中有很多错误,首先将obj
和rndmObj
初始化为
ArrayList<String> obj = new ArrayList<String>();
ArrayList<String> rndmObj = new ArrayList<String>();
之后,IllegalStateException
最有可能获得obj.size()
,因为它将返回零,这是nextInt(n);
方法所不期望的。那么,你可能必须在obj
中插入一些值,或者取决于你想要做的事情。完成此操作后,您将了解下一步该做什么。希望这会有所帮助,如果卡在任何地方你可以发表评论。 :)