onClick Textview将另一个字符串传递给intent

时间:2013-10-17 10:09:42

标签: java android android-intent onclicklistener

我制作了一个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);
    }
});

但现在我想将另一个值传递给intent。 source[i]。所以我这样尝试了

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

但是这给了我一个索引= -1的ArrayIndexOutOfBoundsException。

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

1 个答案:

答案 0 :(得分: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);
    }
});