java - 单击它时获取动态生成的 TextView 的文本

标签 java android onclick textview

我正在运行一个 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/

相关文章:

Java "Aggregate"事务

android - 通过 Android-Volley 获取 JSON 对象

android - enterAnim & popEnterAnim & exitAnim & popExitAnim 有什么区别?

android - 从第2页和第3页弹出后,有没有办法在第1页运行功能? [等候接听]

javascript - 在 HTML 中单击按钮时调用 JavaScript 函数

javascript - 事件发生后将分数存储在变量中

java - 通过比较行排序

java - 追加两个 hibernate 查询列表并存储在第三个查询列表中

java - 更改字符串中重复的字母

javascript - 使用 Javascript onclick 更改图像 alt