Кажется, есть много вопросов, связанных с этой темой.Когда я прочитал большинство из них, у меня была одна проблема.Обычно люди пытаются создать фрагмент, а затем создать оттуда фрагмент диалога.Таким образом, фрагмент диалога находится внутри фрагмента.
В моем случае я создал кнопку, которая открывает диалоговый фрагмент на панели инструментов.Затем я открываю свой основной фрагмент с панели навигации.Таким образом, фрагмент диалога и мой основной фрагмент вызывается через одно и то же основное действие, только в разных местах.Я не могу вызвать фрагмент диалога изнутри фрагмента, так как он вызывается при выборе пунктов меню.
Я пытался создать интерфейс с слушателем, когда я пытаюсь создать newFragment.setTargetFragment (что-то здесь, 1);Я понятия не имею о том, что я должен положить на поле чего-то здесь.getactivity, foodworkoutfragment и .this неправильные)
Я также пытался сделать так, чтобы мой фрагмент расширял Dialogfragment вместо этого, но это порождает мой фрагмент каждый раз, когда я нажимаю кнопку, что кажется ужасным способом сделать это.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.date_picker) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.mealworkoutTab) {
iconShow = true;
invalidateOptionsMenu();
FragmentTransaction mealsworkoutsFrag = getSupportFragmentManager().beginTransaction();
mealsworkoutsFrag.replace(R.id.flMain,new MealsWorkoutsFragment());
mealsworkoutsFrag.commit();
} else if (id == R.id.userinfoTab) {
iconShow = false;
invalidateOptionsMenu();
FragmentTransaction userInfoFrag = getSupportFragmentManager().beginTransaction();
userInfoFrag.replace(R.id.flMain,new UserInfoFragment());
userInfoFrag.commit();
} else if (id == R.id.logoutTab) {
auth.signOut();
}
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
Я предполагаю, что простое решение должно существовать, так как это выглядит немного тривиально (получить sth из фрагмента диалога во фрагмент)