本篇将描述个人在使用Android Studio时遇到的奇奇怪怪的错误
AndroidStudio错误统计
AndroidStudio Canary
在项目级中的build.gradle中添加项目依赖库,会报错
1
2
3
4
5
6allprojects {
repositories {
maven { url 'https://maven.google.com' }
maven { url "https://jitpack.io" }
}
}大概是因为在项目级的gradle中添加的gradle版本过高,取消了allprojects{}引用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23buildscript {
ext.kotlin_version = "1.4.31"
repositories {
google()
jcenter()
}
dependencies {
//这里的gradle版本过高
classpath "com.android.tools.build:gradle:7.0.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
//无法使用
//allprojects {
// repositories {
// google()
// jcenter()
// maven { url "https://jitpack.io" }
// }
//}
task clean(type: Delete) {
delete rootProject.buildDir
}
AndroidStudio Canary 可与 AndroidStuid共存
- 最好两个都下载,稳定版用来正常开发项目,测试版用来体验新功能
ViewPager子页面中开启一个新的Activity,在返回会导致Fragment页面空白
应该是因为View初始化不在onCreateView中,会导致重复初始化View,导致出错
把Fragment开启懒加载,把View初始化放在onCreateView中,数据加载放在懒加载中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41abstract class BaseFragment : Fragment() {
private var isFirstLoad = true
private var mView: View? = null
protected abstract fun createView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View
protected abstract fun initView()
protected abstract fun initData()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
if (mView == null) {
mView = createView(inflater, container, savedInstanceState)
initView()
}
return mView
}
override fun onResume() {
super.onResume()
if (isFirstLoad) {
initData()
isFirstLoad = false
}
}
override fun onDestroyView() {
super.onDestroyView()
isFirstLoad = true
}
}
采用RecyclerView+GSYVideoPlayer来实现抖音效果时,无法控制和销毁视频
在kolitn中使用Room。在创建数据库实体类(appDataBase)的时候,导入相应的实体类时,应使用**::class**
1
2
3
abstract class AppDatabase : RoomDatabase() {
}
多个Fragment使用Fragment中ViewModel(相同的ViewModel)快捷创建的ViewModel并不是同一个
这样创建的viewModel是重新创建了一个,并不是使用之前创建的viewModel
1
private val viewModel by viewModels<PhotoDetailViewModel>()
必须要这样创建才可以获取相同的viewModel
1
2private lateinit var viewModel : PhotoDetailViewModel
viewModel = ViewModelProvider(activity as PhotoDetailActivity).get(PhotoDetailViewModel::class.java)
7.