我有:
class OriginalClass {
View createMyView() {
TextView textView = new TextView(context);
return textView;
}
}
然后:
class HoldingClass {
List<TextView> textViewsList() {
List<TextView> textViews = new ArrayList();
textViews.add(new OriginalClass().createMyView());
return textViews;
}
}
然后:
class SomeOtherClass {
void aMethod() {
TextView receivedTextView = (new HoldingClass().textViewsList()).get(0);
// Retrieve original class from somewhere here
}
}
如何从receivedTextView
检索“OriginalClass
”中最初创建的课程SomeOtherClass
?
答案 0 :(得分:1)
你不能,当然除了你存储的数据是一对TextView
和创建类的一些指示(可能是它的Class
对象)。该语言不会自动存储此类信息,因为它通常会非常昂贵。
答案 1 :(得分:1)
你可以做那样的事情
使用textView.setTag(getClass().getSimpleName())
class OriginalClass {
View createMyView() {
TextView textView = new TextView(context);
textView.setTag(getClass().getSimpleName());
return textView;
}
}
然后按getTag()
class SomeOtherClass {
void aMethod() {
TextView receivedTextView = (new
HoldingClass().textViewsList()).get(0);
// Retrieve original class from somewhere here
String originalClassName = (String) receivedTextView.getTag();
}
}
答案 2 :(得分:0)
在初始化TextView时尝试设置标记。您可以稍后检索标记。
textView.setTag(OriginalClass.class.getSimpleName());
答案 3 :(得分:0)
在TextView构造函数中,向当前线程询问堆栈跟踪,向结果数组询问第0个元素并获取类
String callersClass = Thread.currentThread()。getStackTrace()[0] .getClassName();