gpt4 book ai didi

Android:程序类型已经存在:android.arch.lifecycle.LiveData$LifecycleBoundObserver

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:07 24 4
gpt4 key购买 nike

我看过一些答案,但与 firebase 和实时数据不兼容或相似有关。我的简单测试应用程序与 firebase 无关。

这是我在模块级别的 gradle 文件:

    apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
applicationId "room.exercise.com.myapplication"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'com.android.support:recyclerview-v7:27.1.1'

//Design for room persistance storage
implementation 'android.arch.persistence.room:runtime:1.0.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
/////

//Design for live data
implementation "android.arch.lifecycle:extensions:1.0.0"
annotationProcessor "android.arch.lifecycle:compiler:1.0.0"
//

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

此应用程序只是对 Room 和实时数据的简单测试,我将数据从数据库加载到 recyclerView。我知道 Room 数据库正在运行,因为这是我的第一个测试。

gradle 文件同步没有问题。编译和运行应用程序时出现错误。

Program type already present: android.arch.lifecycle.LiveData$LifecycleBoundObserver Message{kind=ERROR, text=Program type already present: android.arch.lifecycle.LiveData$LifecycleBoundObserver, sources=[Unknown source file], tool name=Optional.of(D8)}

代码:

public class RoomActivity extends AppCompatActivity implements View.OnLongClickListener {

private StudentListViewModel viewModel;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_room);

//RoomDatabase database = RoomDatabase.getDatabase(RoomActivity.this);
//RoomDataInitializer.AddSampleDataAsync(database);

//List<StudentEntity> students = database.studentDAO().getAllStudents();
//Log.w("Room Activity", "Count = " + students.size());

RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view);
final RecyclerViewAdapter adapter = new RecyclerViewAdapter(new ArrayList<StudentEntity>(), this);
recyclerView.setAdapter(adapter);

viewModel = ViewModelProviders.of(this).get(StudentListViewModel.class);

viewModel.getStudentList().observe(RoomActivity.this, new Observer<List<StudentEntity>>()
{
@Override
public void onChanged(@Nullable List<StudentEntity> studentEntities) {
adapter.addItems(studentEntities);
}
});

}

@Override
public boolean onLongClick(View v) {
return false;
}

最佳答案

试试这个:

implementation "android.arch.lifecycle:extensions:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'

而不是你的版本。

我对这个解决方案没有可解释的解释,但我会尝试。

当一个类被 2 个或多个依赖项定义/引入时,就会发生这种类型的错误。 (在您的例子中是 LifecycleBoundObserver)。

并且此类错误仅在运行时发生。它们不会在 gradle 构建/同步期间发生。

如果此类错误发生在 firebase/android 依赖项中,大多数情况下可以通过升级版本来解决。 (或者可能在问题跟踪器中注册了相同的问题。)。在其他情况下,您可能必须从引入冗余类的依赖项中排除模块/组。

关于Android:程序类型已经存在:android.arch.lifecycle.LiveData$LifecycleBoundObserver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51277653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com