示例:在一个示例androidstudio项目中创建这个文件:现在将它复制到一个kotlin文件并让它转换为kotlin。
import androidx.fragment.app.Fragment;
public class TestJavaFragment extends Fragment {
public TestJavaFragment() {
// Required empty public constructor!!!
}
}
kotlin转换代码:
import androidx.fragment.app.Fragment
class TestJavaFragment : Fragment()
工具>代码>显示kotlin字节码>反编译。结果是,android片段没有所需的空公共构造函数:
public final class TestJavaFragment extends Fragment {
private HashMap _$_findViewCache;
public View _$_findCachedViewById(int var1) {
if (this._$_findViewCache == null) {
this._$_findViewCache = new HashMap();
}
View var2 = (View)this._$_findViewCache.get(var1);
if (var2 == null) {
View var10000 = this.getView();
if (var10000 == null) {
return null;
}
var2 = var10000.findViewById(var1);
this._$_findViewCache.put(var1, var2);
}
return var2;
}
public void _$_clearFindViewByIdCache() {
if (this._$_findViewCache != null) {
this._$_findViewCache.clear();
}
}
// $FF: synthetic method
public void onDestroyView() {
super.onDestroyView();
this._$_clearFindViewByIdCache();
}
}
这使得一些设备像crashytics中显示的那样崩溃:
致命异常:java.lang.runtimeexception无法启动activity componentinfo{the.activity.launching.the.fragment}:androidx.fragment.app.fragment$instantiationexception:无法在BoardingPage上示例化片段:找不到片段构造函数
还尝试了一个静态newinstance,它使用活动中的参数创建片段,在某些设备上也会崩溃。
怎么了,我还缺什么?
谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!