使用安卓开发移动应用,出现各种问题,每每让我感到绝望不堪。
在使用安卓开发APP的时候,经常会需要用Fragment来实现更好看的功能。我拿着《第一行代码》边看边学习Fragment如何实现。然而,在简单的看完书上的内容之后,在手动重现书上的代码的时候,就遇见了很狗血的事情——实现不了!
简直剧毒。
最简单的Fragment实现套路,按照《第一行代码》上所述,步骤就是——先写好一个Activity,然后新建一个或多个Fragment,之后在Activity的layout中加载Fragment的布局,然后在Activity在启动自己的布局的时候,实际上就是调用了Fragment的java文件进行加载。
道理我都懂。
我用一个Fragment实现以下,结果都tm闪退,同时logcat中报错是这个图——
Process: biubiubiu.fragmentproject, PID: 31596
java.lang.RuntimeException: Unable to start activity ComponentInfo{biubiubiu.fragmentproject/biubiubiu.fragmentproject.MainActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2509)
at android.app.ActivityThread.access$1000(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
尽情的百度。
然而这种报错,是很tm泛泛而谈的。我根本搜集不到太多的关于Fragment的使用而产生这样的报错 的解决方案。都是诸如一些资源放置、命名等导致这个报错。没什么软用。
以下是我搜集到的两个有可能产生这个BUG的Fragment设置要点——
博客一:https://blog.csdn.net/qq_31071805/article/details/52299378
博客二:https://blog.csdn.net/headshot1/article/details/52940384
这么说吧。两位博客,讲述的大致是:Fragment对应的包名不要弄错、Fragment的布局文件配置Java文件包名要补全等等。
然而,我把Fragment的引用包名先全部改成supportv4以后没用,再全部改成android.app.Fragment,也没用。
反正就是没用。
最后搜寻到这个博客:https://blog.csdn.net/u014581901/article/details/60141113
我@#¥...! 我有用了!我能跑Fragment了!
也就是说,我调用Fragment,我tm还需要在调用Fragment的那个Activity中,使用接口
implements BlankFragment.OnFragmentInteractionListener
最搞笑的,是我必须使用
class MainActivity extends AppCompatActivity
不能继承Activity,要继承AppCompatAcitvity。
然后再实现接口的内容——
public void onFragmentInteraction(Uri uri){ //实现OnFragmentInteractionListener接口中的函数
}
好一个AndroidStudio!和《第一行代码》并不相符。
报错机制还这么蠢,报的什么东西也不知道。心很累。
终归是解决了这个问题,成功调用了Fragment不闪退、能显示了。。。。。