Как настроить мой профиль фрагмента с информацией Facebook - PullRequest
0 голосов
/ 29 мая 2019

Я разрабатываю новое приложение, но у меня возникла проблема;я не знаю, как правильно использовать фрагменты в моем приложении.

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

Главный экран (он перенаправляет на это после входа в Facebook facebook успешно)

private ImageView photoImageView;
private BottomNavigationView bottomNavigationView;
private TextView nameTextView;
private TextView emailTextView;
private TextView idTextView;
private ProfileTracker profileTracker;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.persona_inicio);
    photoImageView = (ImageView) findViewById(R.id.photoImageView);
    nameTextView = (TextView) findViewById(R.id.nameTextView);
    emailTextView = (TextView) findViewById(R.id.emailTextView);
    idTextView = (TextView) findViewById(R.id.uidTextView);

    final Fragment searchFragment = new search_fragment();
    final Fragment discoverFragment = new fragment_discover();
    final Fragment pblkFragment = new fragment_PBLK();
    final Fragment profileFragment = new ProfileFragment();
    final Fragment ajustesFragment = new fragment_ajustes();

    if (savedInstanceState == null) {
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.fragment_container, searchFragment).commit();
    }

    bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNav);

    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            FragmentManager fragmentManager = getSupportFragmentManager();

            if (item.getItemId() == R.id.Searchh) {
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, searchFragment).commit();
            } else if (item.getItemId() == R.id.discover) {
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, discoverFragment).commit();
            } else if (item.getItemId() == R.id.PBLK) {
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, pblkFragment).commit();
            } else if (item.getItemId() == R.id.Profile) {
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, profileFragment).commit();
            } else if (item.getItemId() == R.id.ajustes) {
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, ajustesFragment).commit();
            }
            return true;
        }

    });
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    profileTracker = new ProfileTracker() {
        @Override
        protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
            if (currentProfile != null) {
                displayProfileInfo(currentProfile);
            }
        }
    };

    if (AccessToken.getCurrentAccessToken() == null) {
        goLoginScreen();
    } else {
        requestEmail(AccessToken.getCurrentAccessToken());

        Profile profile = Profile.getCurrentProfile();
        if (profile != null) {
            displayProfileInfo(profile);
        } else {
            Profile.fetchProfileForCurrentAccessToken();
        }
    }
}

private void requestEmail(AccessToken currentAccessToken) {
    GraphRequest request = GraphRequest.newMeRequest(currentAccessToken, new GraphRequest.GraphJSONObjectCallback() {
        @Override
        public void onCompleted(JSONObject object, GraphResponse response) {
            if (response.getError() != null) {
                Toast.makeText(getApplicationContext(), response.getError().getErrorMessage(), Toast.LENGTH_LONG).show();
                return;
            }
            try {
                String email = object.getString("email");
                setEmail(email);
            } catch (JSONException e) {
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }
    });
    Bundle parameters = new Bundle();
    parameters.putString("fields", "id, first_name, last_name, email, gender, birthday, location");
    request.setParameters(parameters);
    request.executeAsync();
}

private void setEmail(String email) {
    emailTextView.setText(email);
}

private void goLoginScreen() {
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

public void logout(View view) {
    FirebaseAuth.getInstance().signOut();
    LoginManager.getInstance().logOut();
    goLoginScreen();
}

private void displayProfileInfo(Profile profile) {
    String id = profile.getId();
    String name = profile.getName();
    String photoUrl = profile.getProfilePictureUri(100, 100).toString();

    nameTextView.setText(name);
    idTextView.setText(id);

    Glide.with(getApplicationContext())
            .load(photoUrl)
            .into(photoImageView);
}

@Override
protected void onDestroy() {
    super.onDestroy();

    profileTracker.stopTracking();
}

this is how my app looks like

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