我以编程方式在B级创建了一个textview。当A级打电话时。
它添加了文字说“我去了商店”,我需要单词“the”作为链接。我已经在CLASS B中使用了它。
sb.setSpan(new MyClickableSpan(Word), start, start+Word.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
正在调用MyClickableSpan类
public class MyClickableSpan extends ClickableSpan {
private String word;
public MyClickableSpan(String word) {
this.word = word;
}
@Override
public void onClick(View widget) {
Log.d("Spaannnned",word);
}
}
因此,当点击此链接时,它会显示在我的日志中。
但我需要它在A类中运行一个函数并传入单词。
请帮忙
答案 0 :(得分:0)
将您的“A类”实例提供给MyClickableSpan
的构造函数,将其保存在数据成员中,并使用onClick()
方法中的那个。
或者,使用event bus like Otto让onClick()发出“A类”订阅的消息。
答案 1 :(得分:0)
只需在您的范围内添加点击监听器界面:
public class MyClickableSpan extends ClickableSpan {
public interface SpanClickListener
{
public void onSpanClicked(View widget, MyClickableSpan span);
}
private String word;
private SpanClickListener clickListener;
public MyClickableSpan(String word, SpanClickListener listener) {
this.word = word;
clickListener = listener;
}
public String getWord() { return word; }
@Override
public void onClick(View widget) {
Log.d("Spaannnned",word);
if (clickListener != null) clickListener.onSpanClicked(widget, this);
}
}
然后,在你的活动中:
MyClickableSpan span = new MyClickableSpan("Hello!", new MyClickableSpan.SpanClickListener() {
@Override
public void onSpanClicked(View widget, MyClickableSpan span)
{
Toast.makeText(context, span.getWord(), Toast.LENGTH_SHORT);
}
};
....
//add your span to the Spannable or whatever you want.