2

我正在运行一个 for 循环并生成应该可以点击的 TextView,因为我想开始一个意图并将 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());
        }
    });
}
4

3 回答 3

10

您实际上在参数中获得了视图。只需将其转换为 TextView 并调用getText()

public void onClick(View v) {
  Log.d("text",((TextView) v).getText().toString());
}

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

于 2013-10-11T09:45:34.880 回答
0

您可以尝试以下方法:

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);
于 2013-10-11T09:48:57.273 回答
0

试试这个..

把它用作地球仪

TextView articleURL[];

然后像下面一样初始化articleURL

articleURL = new TextView[hashMapSize];

然后如果您的扩展片段意味着在下面使用

articleURL[i]   = new TextView(getActivity());

扩展活动手段

articleURL[i]   = new TextView(this);

System.out.println(((TextView)v).getText().toString());
于 2013-10-11T09:50:49.247 回答