I create a fragment of the settings and can not call it. Fragment code.
public class SettingsFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.fragment_preference, rootKey); } } Here I call fragments public class MainActivity extends AppCompatActivity {
private BottomNavigationView bottomNavigationView; private FrameLayout frameLayout; private HomeFragment homeFragment; private AddFragment addFragment; private SettingsFragment settingsFragment; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bottomNavigationView = findViewById(R.id.main_nav); frameLayout = findViewById(R.id.main_frame); homeFragment = new HomeFragment(); addFragment = new AddFragment(); settingsFragment = new SettingsFragment(); setFragment(homeFragment); bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.nav_home: bottomNavigationView.setItemBackgroundResource(R.color.darkTurquise); setFragment(homeFragment) ; return true; case R.id.nav_add: bottomNavigationView.setItemBackgroundResource(R.color.darkTurquise); setFragment(addFragment); return true; case R.id.nav_setting: bottomNavigationView.setItemBackgroundResource(R.color.darkTurquise); Fragment fragment = getFragmentManager().findFragmentById(R.id.fragmentSetting); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); if (savedInstanceState == null){ fragmentTransaction.replace(R.id.fragmentSetting, fragment); fragmentTransaction.commit(); } return true; default: return false; } } }); } private void setFragment( android.support.v4.app.Fragment fragment) { android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_frame, fragment); fragmentTransaction.commit(); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); return super.onOptionsItemSelected(item); } }
Fragment fragment = getFragmentManager().findFragmentById(R.id.fragmentSetting); Returns null. What could be the problem?