我正在运行一个 for 循环并生成应该可点击的 TextView,因为我想开始然后一个 Intent 并将 url 作为参数以及源传递。
我试过了
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
我只需要我点击的TextView的内容。我究竟如何得到它? articleURL[i] 不起作用,因为他那时不知道 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());
}
});
}
最佳答案
你实际上得到了参数中的View。只需将其转换为 TextView 并调用 getText()
public void onClick(View v) {
Log.d("text",((TextView) v).getText().toString());
}
也不要使用 System.out.println
。这是 Android,而不是桌面 Java,编写 android 代码与普通 Java 有巨大的不同。您应该买一本关于 Android 的书并阅读它,否则您的应用很快就会崩溃,您将没有任何机会修复它们。
关于java - 单击它时获取动态生成的 TextView 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314988/