我有一个带有3个EditText
的Activity
和一个自定义视图,它充当一个专门的键盘,将信息添加到EditText
s中。
目前,我正在将Activity
传递给视图,这样我就可以从自定义键盘获取当前关注的编辑文本并更新内容。
有没有一种方法可以引用父活动,并在不将活动传递到视图中的情况下获得当前关注的EditText
?
发布于 2015-10-06 23:04:39
我刚刚从official support library中的MediaRouter中提取了源代码,到目前为止,它工作得很好:
private Activity getActivity() {
Context context = getContext();
while (context instanceof ContextWrapper) {
if (context instanceof Activity) {
return (Activity)context;
}
context = ((ContextWrapper)context).getBaseContext();
}
return null;
}
发布于 2018-01-31 23:40:02
我使用了Gomino的answer,并对它进行了修改,使其完全适合myUtils.java,这样我就可以随时随地使用它了。希望有人能发现它有帮助:)
abstract class myUtils {
public static Activity getActivity(View view) {
Context context = view.getContext();
while (context instanceof ContextWrapper) {
if (context instanceof Activity) {
return (Activity)context;
}
context = ((ContextWrapper)context).getBaseContext();
}
return null;
}
}
发布于 2021-06-23 05:27:33
只需要注意,如果你知道你的视图在一个Fragment
中,你可以这样做:
FragmentManager.findFragment(this).getActivity();
从你的onAttachedToWindow
或onDraw
调用它,你不能更早的调用它(例如onFinishInflate
),否则你会得到一个异常。
如果你不确定你的视图是否在Fragment
中,那么可以参考其他答案,例如Gomino,只是想把它抛出来。
https://stackoverflow.com/questions/8276634
复制相似问题