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