如何在Java的Fragment或其他Activity中获取Application类的方法与变量?
如何在Java的Fragment或其他Activity中获取Application类的方法与变量?
嘿,这个问题其实不难解决,咱们先理清楚你贴的Kotlin代码的逻辑:它是把当前Fragment关联的Activity的Application实例强转成自定义的AppTest类,然后获取里面的trustedTimeClient变量。Java里的思路完全一致,只是语法上有小区别,我给你分步讲清楚:
第一步:确保自定义Application类配置正确
首先得确认你的AppTest是继承自Android的Application类,并且已经在AndroidManifest.xml里注册好了(在<application>标签的android:name属性指定这个类)。另外Java不像Kotlin会自动生成getter,所以要给私有变量trustedTimeClient写好公开的getter方法:
public class AppTest extends Application { private TrustedTimeClient trustedTimeClient; @Override public void onCreate() { super.onCreate(); // 记得在这里初始化trustedTimeClient实例 trustedTimeClient = new TrustedTimeClient(); } // 提供公开的getter方法供外部调用 public TrustedTimeClient getTrustedTimeClient() { return trustedTimeClient; } }
第二步:在Fragment里获取变量/方法
和Kotlin逻辑类似,先拿到Fragment绑定的Activity(一定要判空,避免空指针),再强转成AppTest,最后调用getter方法:
private TrustedTimeClient getTrustedTimeClient() { // 先判断Activity是否存在,防止空指针异常 if (getActivity() == null) { return null; // 你也可以根据业务需求抛出异常或者返回默认实例 } // 强转Application为自定义的AppTest类 AppTest app = (AppTest) getActivity().getApplication(); return app.getTrustedTimeClient(); }
第三步:在Activity里获取变量/方法
如果是在Activity里的话更简单,直接调用getApplication()方法再强转就行:
// 在Activity的代码块里直接这么写 AppTest app = (AppTest) getApplication(); TrustedTimeClient trustedTimeClient = app.getTrustedTimeClient();
这样就能实现和Kotlin代码一样的效果啦~
备注:内容来源于stack exchange,提问作者Me Compu
相关产品推荐
相关产品推荐

