Как сохранить DialogFragment поверх вновь созданных действий?

#android #android-dialogfragment

#Android #android-dialogfragment

Вопрос:

У меня есть действие A, которое открывает a DialogFragment . В этом диалоговом окне кнопка открывает действие B. Я бы хотел, чтобы это действие B открывалось ниже DialogFragment (которое остается открытым), и я не хочу, чтобы диалог создавался заново.

Как я могу этого добиться? Есть ли способ изменить родительский Activity элемент DialogFragment?

Приветствия.

Ответ №1:

Для этого можно использовать переход.

 public void Trans(View v){
    Intent intent = new Intent(this,SecondActivity.class);
    String transitionName = getString(R.string.transition_album_cover);
    ActivityOptionsCompat options =
            ActivityOptionsCompat.makeSceneTransitionAnimation(HomeActivity.this,
                    albumCoverImageView,   // The view which starts the transition
                    transitionName    // The transitionName of the view we’re transitioning to
            );
    ActivityCompat.startActivity(HomeActivity.this, intent, options.toBundle());
}
  

В макете HomeActivity:

     <ImageView
    android:layout_height="200dp"
    android:layout_width="200dp"
    android:src="@drawable/pic"
    android:id="@ id/transPic"
    android:onClick="Trans"
    android:transitionName="@string/transition_album_cover" />
  

И в макете SecondActivity

     <ImageView
    android:layout_height="300dp"
    android:layout_width="match_parent"
    android:scaleType="centerCrop"
    android:id="@ id/transPic"
    android:src="@drawable/pic"
    android:transitionName="@string/transition_album_cover" />
  

Здесь я использовал ImageView как общий элемент как в HomeActivity, так и во втором действии. Я полагаю, вы можете попробовать что-то подобное и для диалогового окна. Однако я сам не делал этого для диалогового окна.

РЕДАКТИРОВАТЬ: изменение родительского элемента диалога не является чем-то достижимым таким образом. Я не читал эту часть, когда отправлял ответ. Но, я думаю, это все же стоит попробовать, если вы не обязаны использовать сам диалог.