E / RecyclerView: адаптер не подключен; пропуск макета - проблема с Android 9.0 Pie - PullRequest
0 голосов
/ 23 марта 2019

Я пишу какое-то приложение для Android, и во время сборки проекта возникает ошибка: E / RecyclerView: Адаптер не подключен; пропускающий макет. Приложение работает, но когда я хочу запустить этот конкретный фрагмент (фрагмент карты), оно падает или снова переходит к основному действию. Однако проблема только в Android 9.0 Pie, нет проблем в Android 8.0 Oreo

Я пробовал много вещей, но не смог найти основную причину, потому что в фрагменте, который я хочу запустить, нет RecyclerView, поэтому, я думаю, ему не нужен адаптер.

Фрагмент, который я хочу начать:

открытый класс MapsActivity расширяет FragmentActivity, реализует OnMapReadyCallback {

личная карта GoogleMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    GPSTracker tracker = new GPSTracker(MapsActivity.this);
    double lat=tracker.getLatitude();
    double lng=tracker.getLongitude();

    // Add a marker for current location and move the camera
    LatLng currentLocation = new LatLng(lat, lng);
    mMap.addMarker(new MarkerOptions().position(currentLocation).title("Current Location Marker"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(currentLocation));
  }
}

И это действие, из которого я хочу перейти к этому фрагменту карты:

public class DescriptionActivity extends AppCompatActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_description);
    Bundle bundle = getIntent().getExtras();
    int id = bundle.getInt("ID");
    String detailedDescription = bundle.getString("TITLE");
    String imageUrl = bundle.getString("IMAGE_URL");
    Button navigate = (Button) findViewById(R.id.navigate);
    TextView idTxt = (TextView) findViewById(R.id.detailsText);
    TextView detailedDescTxt = (TextView) findViewById(R.id.detailedDescription);
    ImageView dishImage = (ImageView) findViewById(R.id.dishImage);
    idTxt.setText("ID " + String.valueOf(id));
    detailedDescTxt.setText(detailedDescription);
    Picasso.get().load(imageUrl).into(dishImage);

    navigate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(v.getContext(), MapsActivity.class);
            v.getContext().startActivity(intent);
        }
    });
  }
}

Основной класс действий (с «установить адаптер» и «установить layoutManager»)

открытый класс MainActivity расширяет AppCompatActivity {

private RecyclerListAdapter adapter;
private RecyclerView recyclerView;
ProgressDialog progressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    progressDialog = new ProgressDialog(MainActivity.this);
    progressDialog.setMessage("Loading....");
    progressDialog.show();

    /*Create handle for the RetrofitInstance interface*/
    GetDataService service = RetrofitClientInstance.getRetrofitInstance().create(GetDataService.class);
    Call<List<RetroList>> call = service.getAllPhotos();
    call.enqueue(new Callback<List<RetroList>>() {
        @Override
        public void onResponse(Call<List<RetroList>> call, Response<List<RetroList>> response) {
            progressDialog.dismiss();
            generateDataList(response.body());
        }

        @Override
        public void onFailure(Call<List<RetroList>> call, Throwable t) {
            progressDialog.dismiss();
            Toast.makeText(MainActivity.this, "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
        }
    });
}

/*Method to generate List of data using RecyclerView with custom adapter*/
private void generateDataList(List<RetroList> photoList) {
    recyclerView = findViewById(R.id.customRecyclerView);
    adapter = new RecyclerListAdapter(this, photoList);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(adapter);
}

}

Журнал аварий здесь : http://pasted.co/65607023

1 Ответ

0 голосов
/ 23 марта 2019

переместите эту строку:

recyclerView = findViewById(R.id.customRecyclerView);

внутри onCraete() Метод

Эта ошибка происходит, потому что при вызове generateDataList() будет определять RecyclerView каждый раз

...