美文网首页Android爬坑记
在Activity/Fragment构造函数中定义布局文件Id

在Activity/Fragment构造函数中定义布局文件Id

作者: 葛糖糖 | 来源:发表于2020-06-19 16:22 被阅读0次

    随着很多项目都迁移到了AndroidX,AndroidX为我们带来了一些库统一的时候也带来一下优化的tips,比如在Activity/Fragment构造函数中定义layout Id.

    Activity/Fragment引入布局文件


    Acticity

    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
        }
    }
    

    在activity中我们一般都是继承AppCompatActivity(),复写onCreate方法,然后在里面通过setContentView来设置我们的布局文件Id.
    Fragment

    class MainFragment : Fragment() {
    
        override fun onCreateView(
            inflater: LayoutInflater, container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {
            return inflater.inflate(R.layout.main_fragment, container, false)
        }
    }
    

    在Fragment中我们一般都是继承Fragment(),复写onCreateView方法,然后inflate布局文件Id生成一个View用来返回.

    AndroidX引入布局文件


    首先在build.gradle引入相关库

    implementation 'androidx.appcompat:appcompat:1.1.0'
    

    Acticity

    class MainActivity : AppCompatActivity(R.layout.activity_main)
    

    Fragment

    class MainFragment : Fragment(R.layout.main_fragment)
    

    瞄一眼源码

     @ContentView
        public ComponentActivity(@LayoutRes int contentLayoutId) {
            this();
            mContentLayoutId = contentLayoutId;
        }
    
        /**
         * {@inheritDoc}
         *
         * If your ComponentActivity is annotated with {@link ContentView}, this will
         * call {@link #setContentView(int)} for you.
         */
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mSavedStateRegistryController.performRestore(savedInstanceState);
            ReportFragment.injectIfNeededIn(this);
            if (mContentLayoutId != 0) {
                setContentView(mContentLayoutId);
            }
        }
    

    通过源码可以看出只不过是ComponentActivity帮我们把这一步做了.
    算是积累的小tips.

    相关文章

      网友评论

        本文标题:在Activity/Fragment构造函数中定义布局文件Id

        本文链接:https://www.haomeiwen.com/subject/pvnvxktx.html