关于安卓使用Fragment碎片APP停止运行的问题

先说总结吧:使用碎片Fragment一定要定义id,尽管整个过程都用不到id,不定义id会错误。


今天在练习新闻界面应用,写了几百行代码,本来是准备将RecyclerView加载到碎片中,最后运行的结果是app停止运行,reclclerview的代码太多一直查不出原因,最后只能写个小测试。

第一步,新建一个项目,我们先新建一个布局layout_fragtext.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        />

</LinearLayout>


然后我们再新建一个Java类继承Fragment,v4或者app库都可以

ButtonFragText.java

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by chen on 2018/4/9.
 */

public class ButtonFragText extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_fragtext,container,false);
        return view;
    }
}

然后修改activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="com.example.chen.fragtext.ButtonFragText"
        />

</LinearLayout>

我们将一个BUTTON布局加载到碎片里再引入activity_main,理论上应该会显示一个按钮

然而结果是


我之前写过碎片没事啊,怎么现在就错误了?折腾了好久。

好了修改actiivity_main.xml的代码,我们在碎片fragment定义id

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    <fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="com.example.chen.fragtext.ButtonFragText"
        android:id="@+id/frag"
        />


</LinearLayout>

运行一下


总结:使用碎片Fragment一定要定义id,尽管整个过程都用不到id,不定义id会错误

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭