Невозможно получить поставщика androidx.lifecycle.ProcessLifecycleOwnerInitializer: для API 26 - PullRequest
0 голосов
/ 18 января 2020

Я использую Retrofit2 для подключения моего android приложения к nodeJs серверу. Вставка данных в MongoDB у меня работает нормально, но когда я пытаюсь получить значения базы данных, отображается ошибка:

Процесс: com.example.transportor, PID: 2880 java .lang.IllegalArgumentException: невозможно создать конвертер для java .util.List

чего-то подобного, что заставляет меня добавить

` // Retrofit & OkHttp
    implementation 'com.squareup.retrofit2:retrofit:2.7.1'

    // JSON Converter
    implementation 'com.squareup.retrofit2:converter-gson:2.7.1'
`

в build.gradle, чтобы попытаться решить эту проблему, но я обнаружил, что converter-gson работает только для> API26, теперь, когда я использую эмулятор (API 26), новое отображение исключений:

java .lang.RuntimeException: невозможно получить провайдера androidx.lifecycle.ProcessLifecycleOwnerInitializer: java .lang.ClassNotFoundException: не найден класс «androidx.lifecycle.ProcessLifecycleOwnerInitializer" по пути: DexPathList [[zip] [[zip] data / app / com.example.transportor-ChZ6SODKyPbtuq6zCVZRfw == / base.apk "], nativeLibraryDirectories = [/ data / app / com.example.transportor-ChZ6SODKyPbtuq6zCVZRfw == / lib / x86, system / / vendor / lib]] в android .app.ActivityThread.installProvider (ActivityThread. java: 6288) в android .app.ActivityThread.installContentProviders (ActivityThread. java: 5851) в android .app .ActivityThread.handleBindApplication (ActivityThread. java: 5772) в android .app.ActivityThread.-wrap1 (неизвестный источник: 0) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1661 ) в android .os.Handler.dispatchMessage (Обработчик. java: 105) в android .os.Looper.l oop (Looper. java: 164) в android .app.ActivityThread .main (ActivityThread. java: 6541) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.Zygote $ MethodAndArgsCaller.run (Zygote. java: 240) at com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 767) Причина: java .lang.ClassNotFoundException: не найден класс "androidx.lifecycle.ProcessLifecycleOwnerInitializer" на пути : DexPathList [[zip-файл »/data/app/com.example.transportor-ChZ6SODKyPbtuq6zCVZRfw==/base.apk"],nativeLibraryDirectories=[/data/app/com.examp le.transportor-ChZ6SODKyPbtuq6zCVZRfw == / lib / x86, / system / lib, / vendor / lib]] в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader. java: 93) в java .lang.Classo (ClassLoader. java: 379) в java .lang.ClassLoader.loadClass (ClassLoader. java: 312) в android .app.ActivityThread.installProvider (ActivityThread. java: 6273) в android .app.ActivityThread.installContentProviders (ActivityThread. java: 5851) в android .app.ActivityThread.handleBindApplication (ActivityThread. java: 5772) в android .app.ActivityThread.-wrap1 (Неизвестный источник: 0) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1661) в android .os.Handler.dispatchMessage (Обработчик. java: 105) в android .os.Looper .l oop (Looper. java: 164) в android .app.ActivityThread.main (ActivityThread. java: 6541) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.Zygote $ MethodAndArgsCaller.run (Zygote. java: 240) на com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 767)

мой код дыры:

IMYServices:

 @POST("collect")
    @FormUrlEncoded
    Observable<String> collect_pt(@Field("creator") String creator,
                                       @Field("date_creation_col") String date_creation_col,
                                       @Field("emailcol") String emailcol,
                                       @Field("nom_col") String nom_col,
                                       @Field("long_col") String long_col,
                                       @Field("lat_col") String lat_col,
                                       @Field("tel_fix_col") String tel_fix_col,
                                       @Field("tel_mobile_col") String tel_mobile_col,
                                       @Field("adress_col") String adress_col,
                                       @Field("heure_matin_col") String heure_matin_col,
                                       @Field("heure_apresmatin_col") String heure_apresmatin_col,
                                       @Field("type") String type,
                                       @Field("imagePath") String imagePath1
                                       );
    @POST("collect/get")
    @FormUrlEncoded
    Call<List<col>> getcollection(@Field("selector") String selector);

RetrofitClient:

public class RetrofitClient {
    private static Retrofit instance;
    public static Retrofit getInstance(){
        if(instance == null){
            instance = new Retrofit.Builder()
                    .baseUrl("http://transportor.ddns.net:3000/")
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(ScalarsConverterFactory.create()).build();
        }

        return instance;
    }

Main. java:

CompositeDisposable compositeDisposable = new CompositeDisposable();
    IMyServices myServices;


///--------In onCreateView-----///
   Retrofit retrofitClient = RetrofitClient.getInstance();
        myServices = retrofitClient.create(IMyServices.class);


//--------In onMapReady ---------///
        getallcollection("all");
//-------- getallcollection method---------//

 private void getallcollection(String selector) {
        Call<List<col>> call = myServices.getcollection(selector);
        call.enqueue(new Callback<List<col>>() {
            @Override
            public void onResponse(Call<List<col>> call, Response<List<col>> response) {
                List<col> colList = response.body();
                //String[] colnames = new String[colList.size()];
                /*for(int i=0; i< colList.size();i++){

                }*/
                for ( col c: colList){
                    Log.d("name : ",c.getNom_col());
                }
            }

            @Override
            public void onFailure(Call<List<col>> call, Throwable t) {
                Toast.makeText(getActivity(),""+t.getMessage(),Toast.LENGTH_SHORT).show();
            }
        });
    }

извините, ребята, но мне нужна реальная помощь, мне нужно сначала узнать, может ли implementation 'com.squareup.retrofit2:converter-gson:2.7.1' решить мою первую проблему, и мне нужно знать, есть ли способ заставить ее работать на API 21 и, наконец, если мой код в порядке или нет и способ решить это исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...