Есть два фрагмента. Во фрагменте 1 при нажатии кнопки открывается второй фрагмент. Вот код первого фрагмента:
public class NotificationsFragment extends Fragment {
private NotificationsViewModel notificationsViewModel;
private Button registrationButton, autorisationButton;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
notificationsViewModel =
ViewModelProviders.of(this).get(NotificationsViewModel.class);
View root = inflater.inflate(R.layout.fragment_notifications, container, false);
registrationButton = (Button) root.findViewById(R.id.button);
registrationButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RegFragment frg4 = new RegFragment();
FragmentTransaction trans4 = getFragmentManager().beginTransaction();
trans4.replace(R.id.nav_host_fragment, frg4);
trans4.addToBackStack(null);
trans4.commit();
}
});
return root;
}
}
Код второго фрагмента, который открывается при нажатии на кнопку в первом:
public class RegFragment extends Fragment {
private RegViewFragment regViewFragment;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
regViewFragment =
ViewModelProviders.of(this).get(RegViewFragment.class);
View root = inflater.inflate(R.layout.m_registeration, container, false);
return root;
}
}
Не могу понять как добавить в Action Bar стрелку, при нажатии на которую, осуществлялся возврат со второго фрагмента на первый. При нажатии на системную кнопку "назад" всё работает.
Внешне это сейчас выглядит вот так:
При нажатии на кнопку Зарегистрироваться открывается следующий фрагмент:
Все довольно просто. Добавляете тулбар в xml вашего фрагмента:
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
дальше инициализируете его в фрагменте:
Toolbar toolbar = root.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_arrow_back_black_24dp);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
и дальше либо используете этот способ:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the toorbar's NavigationIcon as up/home button
case android.R.id.home:
//NavigationIcon
return true;
}
return super.onOptionsItemSelected(item);
}
либо такой метод:
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
Вот тут есть много полезной информации.
Разобрался.
Это добавляем в метод onCreateView во фрагменте, который открывается при нажатии кнопки:
ActionBar actionBar = ((MainActivity)getActivity()).getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
Это добавляем не во фрагмент, в котором находится кнопка, вызывающая другой фрагмент, а в MainActivity:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вопрос вызван тем, что у меня есть CyclicBarrier, и мне из главного потока нужно узнать, когда CyclicBarrier открылсяДля CyclicBarrier я могу указать Runnable, который...
Подскажите, пожалуйста, каким(и) способом можно обработать готовое изображение что бы растянув/сжав придать ему форму разностороннего четырёхугольника...
Создал таблицу и пытаюсь занести в неё данные из формыДанные не заносятся