Скрыть основное действие при использовании фрагмента

#android-fragments

Вопрос:

Прошло уже некоторое время, поэтому я немного борюсь с фрагментами. Я сейчас работаю над демо-версиями, чтобы снова познакомиться. То, что я делаю, относится к основной деятельности, у меня есть кнопка для нажатия, которая открывает фрагмент для ввода такой информации, как имя, адрес и т. Д. По какой-то причине основное действие не исчезает и отображается поверх фрагмента. Что я делаю не так???

Примечание: Я еще не подключил кнопку отмены, чтобы вернуться к основной деятельности, ничего не делая.

Основная Деятельность:

 public class MainActivity extends AppCompatActivity {

public static User mUser = new User();

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



    Button requestServiceButton = findViewById(R.id.servicesButton);
    requestServiceButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction().setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
            NewUser fragment = new NewUser();
            transaction.replace(R.id.fragmentHolder, fragment);
            transaction.addToBackStack(null);
            transaction.commit();

        }

    });
 

Новый класс пользователей:

 public class NewUser extends Fragment {



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

    View v = inflater.inflate(R.layout.dialog_new_user, container, false);

    final EditText fName = v.findViewById(R.id.firstNameEditText);
    final EditText lName = v.findViewById(R.id.lastNameEditText);
    final EditText address = v.findViewById(R.id.editTextAddress);
    final EditText city = v.findViewById(R.id.cityEditText);
    final EditText email = v.findViewById(R.id.editTextEmailAddress);
    final EditText password = v.findViewById(R.id.editTextPassword);
    final EditText phoneNumber = v.findViewById(R.id.editTextPhone);
    final EditText username = v.findViewById(R.id.usernameEditText);
    final EditText zipCode = v.findViewById(R.id.zipEditText);

    Button okButton = v.findViewById(R.id.btnOK);

    okButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            MainActivity.mUser.setFirstName(fName.getText().toString());
            MainActivity.mUser.setLastName(lName.getText().toString());
            MainActivity.mUser.setAddress(address.getText().toString());
            MainActivity.mUser.setCity(city.getText().toString());
            MainActivity.mUser.setEmailAddress(email.getText().toString());
            MainActivity.mUser.setPassword(password.getText().toString());
            MainActivity.mUser.setPhoneNumber(phoneNumber.getText().toString());
            MainActivity.mUser.setUsername(username.getText().toString());
            MainActivity.mUser.setZipCode(zipCode.getText().toString());

        }
    });

    Button cancelButton = v.findViewById(R.id.btnCancel);

    cancelButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });
    return v;
}
 

Комментарии:

1. Можете ли вы поделиться xml-макетом с идентификатором «R. id.fragmentHolder». Что вы подразумеваете под скрытием активности, немного неясно. Когда вы вызываете «заменить» фрагментом, это означает, что он заменит любой существующий фрагмент в этом контейнере «R. id.fragmentHolder», или, если там уже ничего нет, он просто добавит его. Следовательно, фрагменты должны храниться только внутри действия, а не заменять действия

2. Мои извинения. В основном у меня есть мой главный экран, и когда нажимается кнопка, я хочу перейти на другой экран, где вводится информация, затем вы нажимаете «Отправить», сохраняете все и возвращаетесь на главный экран. Я только пытаюсь показать фрагмент без отображения «R. layout.activity_main». Я знаю, что это вопрос для начинающих, прошло всего несколько лет с тех пор, как я это делал, и по какой-то причине у меня начинается головокружение.

3. Я думаю, что вы, вероятно, захотите установить ширину и высоту «R. id.fragmentHolder» на значение match_parent, чтобы пользовательский интерфейс фрагмента занимал практически весь экран. Если это не сработает, то, пожалуйста, поделитесь своим «R. layout.activity_main» в вопросе. Это помогло бы лучше понять проблему

4. Спасибо вам за помощь. Как только я перечитал то, что вы прислали, я понял, что мне нужно пустое действие для хранения фрагментов. У меня была кнопка в основном действии, а затем я поместил на нее фрагмент. Я просто переместил все из основной деятельности в «домашнюю часть» и переключился оттуда. Я очень ценю вашу помощь!!!! Спасибо!