Android开发遇Cannot resolve symbol newInstance报错,求解决方法
解决「Cannot resolve symbol newInstance」报错
这个问题其实一眼就能找到根源——你在调用newInstance()静态方法的时候,错误地多写了一个new关键字!静态方法不需要通过new来触发调用,直接通过类名调用就能拿到返回的实例了。
错误代码问题点
你原来的调用代码是这样的:
return new CryptoListChildFragment.newInstance();
这里的new完全是多余的,newInstance()本身就是用来返回CryptoListChildFragment实例的静态方法,加上new后,编译器会误以为你要创建newInstance()这个类的对象,而这个类根本不存在,自然就会抛出「Cannot resolve symbol newInstance」的错误。
修正后的代码
把调用处的new去掉就可以解决问题,修改后的getItem方法如下:
@Override public Fragment getItem(int i) { if (i == 0) { return CryptoListChildFragment.newInstance(); } else { return CryptoListChildFavFragment.newInstance(); } }
补充说明
你的CryptoListChildFragment类里的newInstance()静态方法写法是完全正确的,它已经帮你封装好了Fragment实例的创建逻辑,你只需要直接调用这个方法获取实例即可,不需要再额外用new去实例化Fragment。
内容的提问来源于stack exchange,提问作者Prateek Kumar
相关产品推荐
相关产品推荐

