Я пытаюсь создать PreferenceFragment, который должен быть открыт через NavigationDrawer, но он не работает нормально.
MainActivity.java
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
...
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void setupNavigationDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
mDrawerLayout.closeDrawers();
setTitle(item.getTitle());
switch (item.getItemId()) {
...
case R.id.nav_one:
setFragment(3);
return true;
case R.id.nav_two:
setFragment(4);
return true;
case R.id.nav_settings:
getFragmentManager().beginTransaction()
.replace(R.id.content_main, new SettingFragment())
.commit();
return true;
}
return true;
}
});
}
public void setFragment(int position){
mFragmentTransaction = getSupportFragmentManager().beginTransaction();
Fragment fragment = null;
switch (position){
...
fragment = new OneFragment();
break;
case 4:
fragment = new TwoFragment();
break;
case 5:
break;
}
mFragmentTransaction.replace(R.id.content_main, fragment);
mFragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
mFragmentTransaction.commit();
}
}
SettingFragment.java
public class SettingFragment extends PreferenceFragment {
public SettingFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
}
И это выглядит как введитеописание изображения здесь SettingFragment вставляется поверх остальных фрагментов и не уничтожается после нажатия других фрагментов.
Этот похожий вопрос введите описание ссылки здесь
непомог мне.
Кто-нибудь знает решение?
Решение : используйте PreferenceFragmentCompat вместо PreferenceFragment.