1

我制作了一个可点击的 TextView。当它被点击时,一个新的 Intent 被启动。

articleURL  [i].setText( articleURLArr                  [i] );
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 ( ((TextView) v).getText().toString() );
        Intent intent = new Intent(getActivity().getBaseContext(), WebViewing.class);
        intent.putExtra("sourceURL", ((TextView) v).getText().toString());
        startActivity(intent);
    }
});

但现在我想将另一个值传递给意图。source[i]. 所以我尝试了这种方式

i.putExtra("source" , ((TextView) source[v.getId()]).getText().toString());

但这给了我一个 index= -1 的 ArrayIndexOutOfBoundsException 。

当我处理 onclick 时,如何将另一个值传递给意图?

4

1 回答 1

2

在我看来,你有两种选择来解决这个问题:

1- 在你的点击监听器中使用 i 。为此,您需要将其分配给最终变量。

final int index = i;
articleURL[i].setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        System.out.println ( ((TextView) v).getText().toString() );
        Intent i = new Intent(getActivity().getBaseContext(), WebViewing.class);
        i.putExtra("sourceURL", ((TextView) v).getText().toString());
        i.putExtra("source" , ((TextView) source[index]).getText().toString());
        startActivity(i);
    }
});

2-将索引存储在视图的标签(不是id)中:

articleURL[i].setTag(i);
articleURL[i].setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        System.out.println ( ((TextView) v).getText().toString() );
        Intent i = new Intent(getActivity().getBaseContext(), WebViewing.class);
        i.putExtra("sourceURL", ((TextView) v).getText().toString());
        i.putExtra("source" , ((TextView) source[Integer.parseInt(v.getTag())]).getText().toString());
        startActivity(i);
    }
});
于 2013-10-17T10:28:05.893 回答