Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击动态生成的TextView时获取其文本_Java_Android_Onclick_Textview - Fatal编程技术网

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

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

我正在运行一个for循环,生成应该可以单击的文本视图,因为我想启动一个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
我只需要我点击的文本视图的内容。我怎么才能得到它?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());