#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. Спасибо вам за помощь. Как только я перечитал то, что вы прислали, я понял, что мне нужно пустое действие для хранения фрагментов. У меня была кнопка в основном действии, а затем я поместил на нее фрагмент. Я просто переместил все из основной деятельности в «домашнюю часть» и переключился оттуда. Я очень ценю вашу помощь!!!! Спасибо!