Java 为什么Android Studio 3.5.1中的GridLayout声明与早期版本的Android Studio不同?

Java 为什么Android Studio 3.5.1中的GridLayout声明与早期版本的Android Studio不同?,java,android,Java,Android,所以我今天看了一个教程,其中创建者使用了Android Studio 3.x.x的最早版本,我发现 GridLayout GridLayout=(GridLayout)findViewById(R.id.GridLayout) 不适用于我的Android Studio版本(3.5.1) 在谷歌快速搜索之后,我发现我必须写作 androidx.gridlayout.widget.gridlayout gridlayout=findviewbyd(R.id.gridlayout) 相反 有人能解释为

所以我今天看了一个教程,其中创建者使用了Android Studio 3.x.x的最早版本,我发现

GridLayout GridLayout=(GridLayout)findViewById(R.id.GridLayout)

不适用于我的Android Studio版本(3.5.1)

在谷歌快速搜索之后,我发现我必须写作

androidx.gridlayout.widget.gridlayout gridlayout=findviewbyd(R.id.gridlayout)

相反

有人能解释为什么新版本的代码会变得更复杂,为什么旧代码不能工作吗?另外,为什么其他视图的声明代码仍然相同

(例如,
Button playAgainButton=(Button)findViewById(R.id.playAgainButton);


这种不一致性从何而来?

这是因为他们使用的是Androidx而不是Appcompat库。为了迁移到AndroidX,您必须将Gradle中的依赖项更改为:

implementation 'androidx.appcompat:appcompat:1.0.0'
因此,您可以将GridLayout声明为:

androidx.gridlayout.widget.GridLayout gridLayout = findViewById(R.id.gridLayout);

由于AndroidX正在使用而不是示例中的appcompat支持库,有关详细信息:如果您为
AndroidX.gridlayout.widget.gridlayout
添加导入语句,旧版本应与以前一样工作。好的,谢谢大家:)