首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从视图中获取托管活动?

如何从视图中获取托管活动?
EN

Stack Overflow用户
提问于 2011-11-26 13:58:00
回答 6查看 97.1K关注 0票数 203

我有一个带有3个EditTextActivity和一个自定义视图,它充当一个专门的键盘,将信息添加到EditTexts中。

目前,我正在将Activity传递给视图,这样我就可以从自定义键盘获取当前关注的编辑文本并更新内容。

有没有一种方法可以引用父活动,并在不将活动传递到视图中的情况下获得当前关注的EditText

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-10-06 23:04:39

我刚刚从official support library中的MediaRouter中提取了源代码,到目前为止,它工作得很好:

代码语言:javascript
复制
private Activity getActivity() {
    Context context = getContext();
    while (context instanceof ContextWrapper) {
        if (context instanceof Activity) {
            return (Activity)context;
        }
        context = ((ContextWrapper)context).getBaseContext();
    }
    return null;
}
票数 326
EN

Stack Overflow用户

发布于 2018-01-31 23:40:02

我使用了Gominoanswer,并对它进行了修改,使其完全适合myUtils.java,这样我就可以随时随地使用它了。希望有人能发现它有帮助:)

代码语言:javascript
复制
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;
    }
}
票数 10
EN

Stack Overflow用户

发布于 2021-06-23 05:27:33

只需要注意,如果你知道你的视图在一个Fragment中,你可以这样做:

代码语言:javascript
复制
FragmentManager.findFragment(this).getActivity();

从你的onAttachedToWindowonDraw调用它,你不能更早的调用它(例如onFinishInflate),否则你会得到一个异常。

如果你不确定你的视图是否在Fragment中,那么可以参考其他答案,例如Gomino,只是想把它抛出来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8276634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档