如何从另一个类引用当前或主要活动

新手上路,请多包涵

我经常发现自己需要访问需要引用某些活动的方法。例如,要使用 getWindowManager ,我需要访问一些 Activity。但通常我使用这些方法的代码位于其他没有引用活动的类中。到目前为止,我要么存储了对主要活动的引用,要么将某些活动的上下文传递给了类。有没有更好的方法来做到这一点?

原文由 Johann 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 224
1 个回答
public static Activity getLaunchActivity()
{
    final Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");

    final Method methodApp = activityThreadClass.getMethod("currentApplication");
    App = (Application) methodApp.invoke(null, (Object[]) null);
    Intent launcherIntent = App.getPackageManager().getLaunchIntentForPackage(App.getPackageName());
    launchActivityInfo = launcherIntent.resolveActivityInfo(App.getPackageManager(), 0);
    Class<?> clazz;
    try
    {
        clazz = Class.forName(launchActivityInfo.name);
        if(clazz != null)
            return Activity.class.cast(clazz.newInstance());
    }
    catch (Exception e)
    {}

    return null;
}

原文由 Ali Bagheri 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题