动态按钮Onclick监听器
我正在尝试创建动态按钮。当点击一个按钮时,它应该转到指定给该按钮文本的指定url。动态按钮Onclick监听器
对于测试,首先尝试获取该ID,如果相等则打印值为i
。但每当我点击任何一个按钮,而不是告诉具体的i
值,它将进入整个循环,并打印从1到19(动态创建的按钮数量)的所有i
的值。
而后打印所有值从1到19,该程序越来越强制关闭,说Null pointer exception
。
我甚至通过将处理程序代码之外onCreate()
试过,但我仍然得到同样的错误。
for (i = 0; i <itemList.getTitle().size()-1; i++) {
title[i] = new TextView(this);
title[i].setTextColor(-16711936);
title[i].setTextSize(18);
title[i].setText("Title = "+itemList.getTitle().get(i));
description[i] = new TextView(this);
description[i].setTextColor(-16776961);
description[i].setText("Description = "+itemList.getDescription().get(i)+"......");
more[i]=new Button(this);
more[i].setText(itemList.getLink().get(i));
layout.addView(title[i]);
System.out.println("Title view is set");
layout.addView(description[i]);
//System.out.println("Description view is set");
layout.addView(more[i]);
more[i].setOnClickListener(listener);
}
private OnClickListener listener=new OnClickListener(){
public void onClick(View arg) {
int index = 0;
for (i = 0; i < more.length; i++)
{
if (more[i].getId() == arg.getId())
{
index = i;
System.out.println("Value of i onclick is"+i);
}
}
//System.out.println("Vlaue of I in onclick"+i);
//Uri uri=Uri.parse(itemList.getLink().get(i));
//startActivity(new Intent(Intent.ACTION_VIEW,uri));
//Toast.makeText(getApplicationContext(), "This button is clicked"+i+more[i].getText()+itemList.getLink().get(i),Toast.LENGTH_LONG).show();
}
}
int index = 0;
for (i = 0; i < more.length; i++)
{
if (more[i].getId() == arg.getId())
{
index = i;
System.out.println("Value of i onclick is"+i);
}
}
正如你可以看到这里,我仍然在你的for循环。
把System.out.println("Value of i onclick is"+i);
外面的for循环,它应该工作
PS:格式化你的代码,它更容易阅读的方式,你会更容易发现小错误,类似于这些
您可以使用setTag()
和getTag()
查看方法来识别不同的按钮。
for (i = 0; i < itemList.getTitle().size()-1; i++) {
...
more[i].setTag(i); // Use index of itemList as the tag
}
在的onClick:
int index = (Integer)arg.getTag();
非常感谢,它打印索引的值。 – 2012-03-08 17:35:20
能否请你帮我得到那个按钮的文字,因为arg.settext不是working.Is有任何其他方式,来获取点击的按钮文本 – 2012-03-08 17:37:09
非常感谢,我从按钮 – 2012-03-08 18:32:49
我认为这将帮助你..
设置按钮标签也喜欢动感
more[i].setId(i);
也改变条件像
if (more[i].getId() == i) {
index = i;
}
希望这将帮助你......
感谢文本,这是工作,现在我应该得到按钮的文本 – 2012-03-08 18:13:33
您还可以设置按钮
more[i].setid(i);
的ID Thanks.But还在说空指针异常,没有打印任何I值 – 2012-03-08 17:28:01
你能更新您的文章完整的错误日志和完整的代码? – Andreas 2012-03-09 07:20:44