ViewPager + FragmentPagerAdapter dentro de un DialogFragment obtiene "IllegalArgumentException: No se encontró ninguna vista …"

Estoy tratando de mostrar un FragmentDialog (creado y mostrado como un diálogo NO agregado como contenido en una jerarquía de vista) donde hay un ViewPager cuyo contenido es dado por un FragmentPagerAdapter (proporciona Fragmentos que consiste en una imagen).

El código funciona perfecto al mostrar ViewPager + FragmentPagerAdapter de una FragmentActivity, pero obtiene la siguiente excepción cuando lo hace desde un FragmentDialog:

"IllegalArgumentException: No se encontró ninguna vista para id 0x7f040077 para el fragmento SimpleFragment …"

Aquí está mi código:

A SherlockFragmentActivity con un botón para crear y mostrar el diálogo.

public class BorrameActivity extends SherlockFragmentActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.one_act); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { showTheDialog(); }}); } private void showTheDialog(){ AchGalleryDialog newFragment = AchGalleryDialog.newInstance(achs); newFragment.show(getSupportFragmentManager(), "dialog"); } 

El FragmentDialog:

 public class AchGalleryDialog extends DialogFragment{ public AchGalleryDialog(){ } public static AchGalleryDialog newInstance(){ AchGalleryDialog f = new AchGalleryDialog(); return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.dialog_user_result, container); getDialog().setTitle("Hola tronco"); //content to show in the fragments int[] images = new int[]{R.drawable.d1, R.drawable.d2, R.drawable.d3}; ViewPager pager = (ViewPager) view.findViewById(R.id.pager); MyFragmentAdapter adapter = new MyFragmentAdapter(getFragmentManager(),images); pager.setAdapter(adapter); return view; } } 

Éste es el MyFragmentPagerAdapter muy simple, puse solamente el método de getItem (), y las comprobaciones de nullPointer:

 @Override public Fragment getItem(int position) { return MySimpleFragment.newInstance(images[position]); } 

Y finalmente SimpleFragment:

 public class SimpleFragment extends Fragment{ int id; public static SimpleAchFragment newInstance(int imgId){ SimpleFragment f = new SimpleFragment(); Bundle args = new Bundle(); args.putLong(ID_BUNDLE, imgId); f.setArguments(args); return f; } public SimpleAchFragment(){ } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.id = getArguments() != null ? getArguments().getInt(ID_BUNDLE) : 0; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View v = inflater.inflate(R.layout.simple_fragment, container, false); FragmentActivity mAct = getActivity(); ImageView img = (ImageView) v.findViewById(R.id.image); img.setImageDrawable(mAct.getResources().getDrawable(id)); return v; } } 

Más información, si el contenido pasado al adaptador (una matriz int con 3 entradas) tiene longitud cero, entonces el adaptador no intenta crear ningún fragmento para que los diálogos aparezcan correctamente pero vacíos (como se esperaba). La Excepción se lanza a SimpleFragment.onCreateView () en el momento de inflar. El id que se hace referencia en la excepción (como no se encuentra) corresponde al ID de ViewPager, con está correctamente definido en R.layout.simple_fragment.

Tengo intentar también construir el diálogo con un AlertDialog.builder y también directamente con el constructor de Dialog (), pero consigo el mismo comportamiento.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.