Я знаю, что об этом было много, но я просто не могу понять, как его прибить. То, что я в основном пытаюсь сделать, - это нажать кнопку в фрагменте B Я хочу вернуться к фрагменту A вместе с значением id.
Итак, в моем BackStack вы перейдете к фрагменту A, который приведет вас к фрагменту B, и при нажатии кнопки я хочу вернуться к фрагменту A со значением, чтобы показать , Это мой OnClick слушатель в Фрагменте B:Вернитесь к фрагменту A из фрагмента B со значением
//Fragment B which i called from Fragment A
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(value.getText().toString().trim().length() != 0) {
String order = value.getText().toString(); //The value i want in Fragment B
//return to Fragment A
}
}
В моей MainActivity я протектор моего фрагмента так:
//fragmentManager is initialized in onCreate()
...
private void selectItem(int position) {
Fragment fragment = null;
String fTag = null;
switch (position) {
case 0:
fragment = new FragmentA();
fTag = "fragmentA";
break;
case 1:
fragment = new FragmentC();
fTag = "fragmentC";
break;
case 2:
fragment = new FragmentD();
fTag = "fragmentD";
break;
default:
break;
}
if (fragment != null) {
if(replaceFragments(fragment, fTag)) {
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mNavigationDrawerItemTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
} else {
Log.e(LOGTAG, "Error in creating fragment");
}
}
public boolean replaceFragments(Fragment fragment, String fTag) {
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment, fTag).addToBackStack(fTag).commit();
return true;
}
@Override
public void onBackPressed() {
int count = fragmentManager.getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
} else {
getSupportFragmentManager().popBackStack();
//TODO: add app title on count == 1
}
}
Ага конечно! Не знаю, почему я не думал об этом. Почему метод интерфейса настолько распространен, когда вы можете установить такие аргументы? –
С помощью интерфейса вы можете отправить значение своей активности. Если это не то, что вы ищете, то вы можете отправить свои значения прямо на другой фрагмент, используя вышеуказанный способ. –
Так как фрагментатор живет внутри действия, я думаю, что я так иду? Но я действительно видел где-то, что не рекомендуется отправлять напрямую между фрагментами? –