У меня есть три фрагмента и ящик для навигации в моем приложении: HomeFragment, DetailFragment и CountryFragment. Теперь, когда Iam в HomeFragment (фрагмент по умолчанию), я проверяю условие, если оно возвращает false, я хочу перенаправить на CountryFragment без замены фрагмента.Переключить фрагменты без замены Android
Первоначально в принимающей деятельности И делать что-то вроде этого: -
HomeActivity.
private Android.Support.V4.App.Fragment mCurrentFragment = new SupportFragment();
private Stack<Android.Support.V4.App.Fragment> mStackFragments;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView (Resource.Layout.homelayout);
Android.Support.V4.App.FragmentTransaction tx = SupportFragmentManager.BeginTransaction();
tx.Add(Resource.Id.main, homeFragment);
tx.Add(Resource.Id.main, countryFragment);
tx.Hide(countryFragment);
tx.Add(Resource.Id.main, detailFragment);
tx.Hide(detailFragment);
CurrentFragment = homeFragment;
tx.Commit();
}
void MenuListView_ItemClick (object sender, AdapterView.ItemClickEventArgs e)
{
Android.Support.V4.App.Fragment fragment = null;
switch (e.Id)
{
case 0:
ShowFragment(homeFragment);
break;
case 1:
ShowFragment(countryFragment);
break;
case 2:
ShowFragment(detailFragment);
break;
}
}
public void ShowFragment(SupportFragment fragment)
{
if (fragment.IsVisible)
{
return;
}
var trans = SupportFragmentManager.BeginTransaction();
fragment.View.BringToFront();
mCurrentFragment.View.BringToFront();
trans.Hide(mCurrentFragment);
trans.Show(fragment);
trans.AddToBackStack(null);
mStackFragments.Push(mCurrentFragment);
trans.Commit();
mCurrentFragment = fragment;
}
Следующая в HomeFragment Iam делать что-то вроде: -
public void BtnCompleteSubmit_Click(object sender, EventArgs e)
{
dlgAlert.Dismiss();
CountryFragment countryFrag = new CountryFragment();
// Create new fragment and transaction
var myActivity = (HomeActivity)this.Activity;
myActivity.ShowFragment(countryFrag);
}
Это идти к ShowFragment() из HomeActivity, но вид для фрагмента равна нулю, даже думал, что представление было создано изначально в то время как NavigationDrawer был создан. Как я могу это решить? любая помощь приветствуется.
Привет. Спасибо за ответ. В ShowFragment Iam с помощью Show/Hide для фрагментов, чтобы мне не пришлось добавлять их снова. Как это может работать с вашим примером? – user3034944
Даже в моем случае он не добавляется каждый раз, а только один раз. Затем, если он уже добавлен, найдите его по тегу, а затем покажите его, вот и все. – zIronManBox
Фрагменты показывают друг на друга, когда я пытаюсь это сделать – user3034944