Fragment накладывается на preference fragment

96
24 ноября 2020, 03:40

В navigation drawer создаю два фрагмента обычный и с настройками, при переходе из фрагмента настроек на другой он накладывается

SettingsFragment

public class SettingsFragment extends Fragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().getFragmentManager().beginTransaction()
            .add(R.id.container_fragments, new Settings())
            .commit();
    setHasOptionsMenu(true);
    //getActivity().setTitle(R.string.settings_title);
}
/*@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.settings, container, false);
    return view;
}*/
public static class Settings extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getActivity().setTitle(R.string.settings_title);
        addPreferencesFromResource(R.xml.settings);
    }
}

}

Класс для работы с Navigation Drawer

public abstract class Navigation extends AppCompatActivity {
private DrawerLayout drawer;
private ActionBarDrawerToggle t;
private NavigationView nv;

@LayoutRes
protected int getLayoutResId() {
    return R.layout.activity_fragment;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getLayoutResId());
    drawer = findViewById(R.id.drawer_layout);
    t = new ActionBarDrawerToggle(this, drawer, R.string.Open, R.string.Close);
    drawer.addDrawerListener(t);
    t.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    nv = findViewById(R.id.nav_view);
    nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            int id = item.getItemId();
            switch (id) {
                case R.id.account:
                    /*FragmentManager fm = getSupportFragmentManager();
                    Fragment fragment = fm.findFragmentById(R.id.account_fragment);
                    if (fragment == null) {
                        fragment = new AccountFragment();
                    }
                    fm.beginTransaction()
                            .add(R.id.account_fragment, fragment)
                            .commit();*/
                    openFragment("account");
                    drawer.closeDrawers();
                    break;
                /*case R.id.recipes:
                    Toast.makeText(Navigation.this, "Recipes", Toast.LENGTH_SHORT).show();
                    openFragment("R.id.recipes");
                    break;*/
                case R.id.settings:
                    openFragment("settings");
                    drawer.closeDrawers();
                    break;
                default:
                    return true;
            }
            return false;
        }
    });
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (t.onOptionsItemSelected(item))
        return true;
    return super.onOptionsItemSelected(item);
}

public void openFragment(String frag) {
    FragmentManager fm = getSupportFragmentManager();
    Fragment fragment = fm.findFragmentByTag(frag);
    if (fragment == null) {
        switch (frag) {
            case "account":
                fragment = new AccountFragment();
                break;
           /* case "R.id.recipes":
                break;*/
            case "settings":
                fragment = new SettingsFragment();
                break;
            }
        fm.beginTransaction()
                .replace(R.id.container_fragments, fragment, frag)
                .commit();
    }
}

}

AccountFragment

public class AccountFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().setTitle(R.string.Acoount_title);
    setHasOptionsMenu(true);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.account_fragment, container, false);
    return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

}

Account fragment накладывается на Settings Fragment

![ вот]1

READ ALSO
long n = 922337203685477580; – почему ошибка?

long n = 922337203685477580; – почему ошибка?

Ошибка: integer number too largeНо при чём здесь integer если я указываю тип long?

131
Почему цикл проходит один раз?

Почему цикл проходит один раз?

У меня есть два цикла: один внешний, другой внутреннийВнутренний цикл проходит столько сколько я ему задал

108
Черный экран во время работы в приложение только на Samsung s8+

Черный экран во время работы в приложение только на Samsung s8+

Во время работы с моим приложение на Samsung s8+ очень редко появляется черный экран и телефон попадает в блокировкуКто нибудь знает в чем может...

103
JScrollPane с JTextArea

JScrollPane с JTextArea

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

97