Java 单击动态生成的TextView时获取其文本
我正在运行一个for循环,生成应该可以单击的文本视图,因为我想启动一个intent,并将url作为参数和源传递 所以,我试过这个Java 单击动态生成的TextView时获取其文本,java,android,onclick,textview,Java,Android,Onclick,Textview,我正在运行一个for循环,生成应该可以单击的文本视图,因为我想启动一个intent,并将url作为参数和源传递 所以,我试过这个 articleURL[i].setPaintFlags(articleURL[i].getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); articleURL[i].setOnClickListener(new View.OnClickListener() { @Override public void onCli
articleURL[i].setPaintFlags(articleURL[i].getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
articleURL[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//System.out.println(articleURL[v.getId()].getText().toString());
System.out.println(v.getId());
}
});
我遇到的问题是v.getId()总是0。当我使用注释代码时
System.out.println(articleURL[v.getId()].getText().toString());
我得到一个例外,说
java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1
我只需要我点击的文本视图的内容。我怎么才能得到它?articleURL[i]不起作用,因为他当时不知道我。v.getId()如何始终为-1?不管我点击哪一个
这是完整的for循环
TextView articleURL = new TextView[hashMapSize];
for (int i = 0; i < hashMapSize; i++) {
articleURL[i] = new TextView(getActivity());
articleURL[i].setPaintFlags(articleURL[i].getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
articleURL[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println(articleURL[v.getId()].getText().toString());
//System.out.println(v.getId());
}
});
}
TextView articleURL=newtextView[hashMapSize];
for(int i=0;i
您实际上得到了参数中的视图。只需将其转换为TextView并调用getText()
也不要使用
System.out.println
。这是Android,而不是桌面Java,编写Android代码与普通Java有着巨大的区别。你应该买一本关于Android的书并阅读它,否则你的应用程序很快就会崩溃,你将没有机会修复它们。你可以尝试以下方法:
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println(((TextView)v).getText());
}
};
// ... some loop
articleURL[i].setOnClickListener(listener);
如果还希望获取项目的索引,请尝试以下操作:
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println(v.getTag());
}
};
// ... some loop
articleURL[i].setTag(i);
articleURL[i].setOnClickListener(listener);
试试这个
将此用作globel
TextView articleURL[];
然后像下面那样在articleURL上加上首字母
articleURL = new TextView[hashMapSize];
然后,如果您的扩展碎片意味着使用下面的
articleURL[i] = new TextView(getActivity());
扩展活动方式
articleURL[i] = new TextView(this);
及
articleURL[i] = new TextView(this);
System.out.println(((TextView)v).getText().toString());