Панель навигации не запускает автоматически фрагмент повторного просмотра - PullRequest
0 голосов
/ 17 июня 2019

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

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

На этой странице ящик инициализирован, и должен быть вызван обзор переработчика.

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

        setContentView(R.layout.front_page);
        android.support.v7.widget.Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        drawer = findViewById(R.id.drawer_front_page);
        NavigationView nV = findViewById(R.id.drawer_view);
        View header = nV.getHeaderView(0);
        nV.setNavigationItemSelectedListener(this);
        callbackManager = CallbackManager.Factory.create();
        connMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
                R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        drawer.openDrawer(Gravity.START);
        toggle.syncState();
        nV.setCheckedItem(R.id.list_venue);

        /*ConnectivityManager connMgr = (ConnectivityManager)

                getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

         if(!networkInfo.isConnected()){

         }*/
        //TODO: Create network status check with animation and Dialog
        sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
        isLoggedOut = sharedPreferences.getBoolean(LOGINSTATUS,false);
        drawerProfilePicture = header.findViewById(R.id.drawer_pic_profile);
        drawerUserName = header.findViewById(R.id.drawer_profile_username);
        drawerUserEmail = header.findViewById(R.id.drawer_profile_email);

        if (AccessToken.getCurrentAccessToken() != null && !AccessToken.getCurrentAccessToken().isExpired()) {
            facebookLogin();
        } else {
            inHouseSignUp();
        }
    }

А вот recyclerview

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.menu_venue, container, false);

        if (!Places.isInitialized()) {
            Places.initialize(contextForPlaces, "AIzaSyCKGd3fqmtsDklRGMhnkuIy1GS-j6gRBh8");
        }
        RecyclerView vRV = view.findViewById(R.id.view_venue);
        vRV.setHasFixedSize(true);

        RecyclerView.LayoutManager vLM = new LinearLayoutManager(this.getActivity());
        vAdapter = new VenueAdapter(vIL);
        vAdapter.setOnItemClickListener(this::shareTheView);

        placesClient = Places.createClient(contextForPlaces);


        //TODO: Make App mention when there is no service
        //TODO Figure out animation for scrolling
        //TODO: add code to make sure that the VenueList is complete before displaying it
        //look for transfering keys for the information instead of the information itself

        //TODO: E/RecyclerView: No adapter attached; skipping layout


        for (String club : clubs) {
            FetchPlaceRequest request = FetchPlaceRequest.newInstance(club, placeFields);
            placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
                Place place = response.getPlace();
                PhotoMetadata photoMetadata = Objects.requireNonNull(place.getPhotoMetadatas()).get(0);
                //String attributions = photoMetadata.getAttributions();

                FetchPhotoRequest photoRequest = FetchPhotoRequest.builder(photoMetadata).setMaxHeight(400).setMaxWidth(400).build();
                placesClient.fetchPhoto(photoRequest).addOnSuccessListener((fetchPhotoResponse) -> {

                    Bitmap bitmap = fetchPhotoResponse.getBitmap();

                    vIL.add(new VenueItem( /*Photo*/bitmap, place.getName()));

                    //Log.i(TAG, "Photo Should Be Up");
                    vRV.setLayoutManager(vLM);
                    vRV.setAdapter(vAdapter);
                }).addOnFailureListener((exception) -> {
                    if (exception instanceof ApiException) {
                        ApiException apiException = (ApiException) exception;
                        int statusCode = apiException.getStatusCode();
                        // Handle error with given status code.
                        Log.e(TAG, "Place not found: " + exception.getMessage());
                    }
                });

                Log.i(TAG, "Place found: " + place.getName());
            }).addOnFailureListener((exception) -> {
                if (exception instanceof ApiException) {
                    ApiException apiException = (ApiException) exception;
                    int statusCode = apiException.getStatusCode();
                    // Handle error with given status code.
                    Log.e(TAG, "Place not found: " + exception.getMessage());
                }
            });
        }
        vAdapter.notifyDataSetChanged();

        return view;
    }

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

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Я нашел код, который я стер. Этот фрагмент кода указывает, какой фрагмент запускается при запуске, если его нет

if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                new VenueList()).commit();
        nV.setCheckedItem(R.id.list_venue);
    }
0 голосов
/ 17 июня 2019

Попробуйте это после цикла

for(String club : clubs){}
vAdapter = new VenueAdapter(vIL);
vRV.setLayoutManager(vLM);
vRV.setAdapter(vAdapter);
...