2013-10-09 3 views
1

Я успешно создал свой класс фрагмента диалога, и теперь я хотел бы назвать его из моего основного класса фрагментов, который я создал.Вызов DialogFragment

Я попытался использовать несколько кодов, чтобы позвонить, но я продолжаю получать ошибки и сбои.

Что мне нужно, чтобы поместить мой onClick, чтобы вызвать мой фрагмент диалога?

Заранее благодарен!

Главная Фрагмент Класс:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    final View v = inflater.inflate(R.layout.image_detail_fragment, 
      container, false); 

    mImageView = (RecyclingImageView) v.findViewById(R.id.imageView); 
    mImageView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 


      //Here 


     } 

    }); 

    return v; 
} 

Диалог Фрагмент:

class MyDialogFragment extends DialogFragment { 
Context mContext; 

public MyDialogFragment() { 
    mContext = getActivity(); 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      mContext); 
    alertDialogBuilder.setTitle("Set Wallpaper?"); 
    alertDialogBuilder.setMessage("Are you sure?"); 
    // null should be your on click listener 
    alertDialogBuilder.setPositiveButton("OK", null); 
    alertDialogBuilder.setNegativeButton("Cancel", 
      new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 

    return alertDialogBuilder.create(); 
} 

public static MyDialogFragment newInstance() { 
    MyDialogFragment f = new MyDialogFragment(); 
    return f; 
} 

} 
+0

использования эта треска e, чтобы показать фрагмент диалога MyDialogFragment newFragment = MyDialogFragment.newInstance(); newFragment.show (getFragmentManager(), null); –

+0

jack, что используется 'public static MyDialogFragment newInstance()', если у вас есть диалог MyDialogFragment = new MyDialogFragment() '? – Raghunandan

+0

Возможный дубликат [Calling DialogFragment from Fragment] (http://stackoverflow.com/questions/19252288/calling-dialogfragment-from-fragment) – Raghunandan

ответ

4

Здесь решение:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    final View v = inflater.inflate(R.layout.image_detail_fragment, 
      container, false); 

    mImageView = (RecyclingImageView) v.findViewById(R.id.imageView); 
    mImageView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
       MyDialogFragment dialog = MyDialogFragment.newInstance(); 
      dialog.show(getActivity().getFragmentManager(), "MyDialogFragment"); 
     } 

    }); 

    return v; 
} 
+0

op имеет статический метод newInstance(), который возвращает экземпляр фрагмента диалога. Итак, почему этот диалог MyDialogFragment = новый MyDialogFragment() ' – Raghunandan

+0

Посмотреть последнее редактирование;) –

2

Попробуйте следующее

FragmentTransaction ft = ((FragmentActivity)getActivity()).getSupportFragmentManager().beginTransaction(); 
MyDialogFragment dialog = MydialogFragment.newInstance(); 
dialog.show(ft, "Tag"); 

Здесь также большое TUTORIAL

+1

op имеет статический метод 'newInstance()', который возвращает экземпляр фрагмента диалога. – Raghunandan

+0

Вы правы! Благодаря! –

0

В вашем фрагменте диалога у вас уже есть нижнее, которое возвращает экземпляр диалогового фрейма.

public static MyDialogFragment newInstance() { 
    MyDialogFragment f = new MyDialogFragment(); 
    return f; 
} 

Так попробуйте ниже

DialogFragment newFragment = MyDialogFragment.newInstance();// call the static method 
newFragment.show(getActivity().getFragmentManager(), "dialog"); 

Посмотрите на документы есть пример

http://developer.android.com/reference/android/app/DialogFragment.html

0

Вот как я звонил из моего FragmentACtivity

FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
       ContactsNavi userPopUp = new ContactsNavi(); 
       userPopUp.show(fragmentManager,"baglantilar"); 
Смежные вопросы