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

Mus*_*abe 2 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());
    }
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是v.getId()始终为0.当我使用注释代码时

System.out.println(articleURL[v.getId()].getText().toString()); 
Run Code Online (Sandbox Code Playgroud)

我得到一个例外

java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1
Run Code Online (Sandbox Code Playgroud)

我只需要点击TextView的内容.我到底怎么做到了?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());
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

mer*_*ica 10

实际上你在参数中得到了View.只需将其转换为TextView并调用即可getText()

public void onClick(View v) {
  Log.d("text",((TextView) v).getText().toString());
}
Run Code Online (Sandbox Code Playgroud)

也不要用System.out.println.这是Android,而不是桌面Java,编码android 与普通Java 有很大的不同.你应该买一本关于Android的书并阅读它,否则你的应用程序很快就会崩溃,你将没有机会修复它们.