2017-01-10 5 views
0

У меня есть приложение, в котором пользователь может делать заказы. Я пытаюсь реализовать диалог, в котором пользователь может перемещаться по настройке его номер, то естьСоздание фрагмента в dailog

  1. Выберите дату
  2. Добавить отдельно оплачиваемые предметы
  3. Посмотреть цитаты
  4. Подтверждение бронирования

I написал макет, чтобы отобразить шаги навигации для пользователя (вперед, назад, отменить и т. д.), но я хочу, чтобы упомянутые выше шаги имели собственный фрагмент/макет. Следует также упомянуть, что начальный вызов для создания диалогового окна происходит из фрагмента. Кто-нибудь знает, как достичь этого? Я получаю вид не найдены для Fragment-bookingCustomization_DatePicker ошибки

private Dialog dialog; 
private void BtnMakeBooking_Click(object sender, EventArgs e) 
{ 
    dialog = new Dialog(this.Activity); 
    dialog.RequestWindowFeature((int)WindowFeatures.ContextMenu); 
    dialog.SetTitle("Booking Customization"); 
    dialog.SetContentView(Resource.Layout.Fragment_booking_customization); 

    Fragment_bookingCustomization_DatePicker date = new Fragment_bookingCustomization_DatePicker(); 
    var fragManager = FragmentManager.BeginTransaction(); 
    fragManager.Replace(Resource.Id.relativeLayout1, date); 
    fragManager.Commit(); 

    dialog.Show(); 
} 

Fragment_booking_customization.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <RelativeLayout 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/relativeLayout1" /> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:orientation="horizontal" 
     android:layout_weight="1"> 
     <Button 
      android:text="Back" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="4dp" 
      android:layout_weight="1" 
      android:background="@drawable/red_button" 
      android:drawableLeft="@drawable/ic_action_previous_item" 
      android:id="@+id/btn_bookingcustomization_cancel" /> 
     <Button 
      android:text="Next" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="4dp" 
      android:layout_weight="1" 
      android:background="@drawable/red_button" 
      android:drawableRight="@drawable/ic_action_next_item" 
      android:id="@+id/btn_bookingcustomization_next" /> 
    </LinearLayout> 
    <Button 
     android:text="Confirm Booking" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/red_button" 
     android:drawableRight="@drawable/ic_action_accept" 
     android:id="@+id/btn_bookingcustomization_confirm" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="15dp" 
     android:layout_marginTop="4dp" 
     android:layout_marginBottom="4dp" /> 
    <Button 
     android:text="Cancel" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="15dp" 
     android:layout_marginTop="4dp" 
     android:layout_marginBottom="4dp" 
     android:background="@drawable/red_button" 
     android:drawableRight="@drawable/ic_action_remove" 
     android:id="@+id/btn_bookingcustomization_cancel" /> 
</LinearLayout> 

enter image description here

Fragment_bookingCustomization_DatePicker.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <DatePicker 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/datePicker1" /> 
</LinearLayout> 

Fragment_bookingCustomization_DatePicker.cs

public class Fragment_bookingCustomization_DatePicker : Fragment 
{ 
    public override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     // Create your fragment here 
    } 

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View rootView = inflater.Inflate(Resource.Layout.Fragment_bookingCustomization_DatePicker, container, false); 
     return rootView; 
    } 
} 

ответ

0

Я написал макет для отображения навигационных шагов к пользователю (вперед, назад, отмена и т.д.), но я хочу, описанные выше шаги, чтобы иметь свой собственный фрагмент/раскладка. Следует также упомянуть, что начальный вызов для создания диалогового окна происходит из фрагмента.

Из ваших кодов вы пытаетесь запустить новый фрагмент непосредственно из исходного фрагмента, что также невозможно сделать в соответствии с вашими требованиями. Поэтому просто закомментируйте коды запуска нового фрагмента, чтобы ваш проект работал.

private void BtnClick_Click(object sender, EventArgs e) 
{ 
    dialog = new Dialog(this.Activity); 
    dialog.RequestWindowFeature((int)WindowFeatures.ContextMenu); 
    dialog.SetTitle("Booking Customization"); 
    //here your dialog already host it's own layout: 
    dialog.SetContentView(Resource.Layout.Fragment_booking_customization); 

    //You can't start a new fragment from this fragment. So just comment the following codes out 
    //Fragment_bookingCustomization_DatePicker date = new Fragment_bookingCustomization_DatePicker(); 
    //var fragManager = FragmentManager.BeginTransaction(); 
    //fragManager.Replace(Resource.Id.relativeLayout1, date);//error 
    //fragManager.Commit(); 

    dialog.Show(); 
} 

Если вы хотите знать, как открыть фрагмент из другого фрагмента косвенно, вы можете обратиться к this case.