Как складывать фрагменты? - PullRequest
0 голосов
/ 29 января 2019

Извините за мой плохой английский.Но с чтением проблем нет.

Если я добавлю фрагмент, предыдущий исчезнет.

Я не знаю, в чем проблема.

Когда янажмите клавишу «Назад», основное действие заканчивается.

Фрагмент, который я хочу добавить к основному действию

 holder.post_image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", MODE_PRIVATE).edit();
            editor.putString("postid", post.getPostid());
            editor.apply();
            ((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new PostDetailFragment()).addToBackStack(null).commit();
        }
    });

Основное действие

Я думаю ...

Что-то должно быть не так с BottomNavigationView или onBackPressed ().

 BottomNavigationView bottom_navigation;
Fragment selectedfragment = null;
private long time = 0;
public static Activity _MainActivity;

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

    bottom_navigation = findViewById(R.id.bottom_navigation);
    bottom_navigation.setOnNavigationItemSelectedListener(navigationItemSelectedListener);



    Bundle intent = getIntent().getExtras();
    if (intent != null){
        String publisher = intent.getString("publisherid");
        SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
        editor.putString("profileid", publisher);
        editor.apply();
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                new ProfileFragment()).addToBackStack(null).commit();
    } else {
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                new HomeFragment()).addToBackStack(null).commit();
    }

}
@Override
public void onBackPressed() {
    if (System.currentTimeMillis() - this.time >= 2000) {
        this.time = System.currentTimeMillis();
        Toast.makeText(getApplicationContext(), "Press back again to leave", Toast.LENGTH_LONG).show();
    } else if (System.currentTimeMillis() - this.time < 2000) {
        finish();
    }
}

public BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.nav_home:
                        selectedfragment = new HomeFragment();
                        break;
                    case R.id.nav_search:
                        selectedfragment = new SearchFragment();
                        break;
                    case R.id.nav_add:
                        selectedfragment = null;
                        startActivity(new Intent(MainActivity.this, PostActivity.class));
                        break;
                    case R.id.nav_heart:
                        selectedfragment = new NotificationFragment();
                        break;
                    case R.id.nav_profile:
                        SharedPreferences.Editor editor = getSharedPreferences("PREFS", MODE_PRIVATE).edit();
                        editor.putString("profileid", FirebaseAuth.getInstance().getCurrentUser().getUid());
                        editor.apply();
                        selectedfragment = new ProfileFragment();
                        break;
                }
                if (selectedfragment != null) {
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            selectedfragment).addToBackStack(null).commit();                                 }

                return true;
            }
        };

}

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