No se encontró ninguna vista para id 0x7f0e00d5 (com.example.page:id/dialogViewpager) para el fragmento OneFragment {92c0220 # 1 id = 0x7f0e00d5 android: switcher: 2131624149: 0}

Quiero mostrar tabview en el diálogo. Tengo un archivo de clase principal que se extienden a FragmentActivity y dentro de que estoy mostrando el diálogo llamando a este método como se da a continuación.

private void dialogDictionary() { final Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog_dictionary); dialog.setCancelable(true); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); ImageView imgDialogDictionaryClose = (ImageView) dialog.findViewById(R.id.imgDialogDictionaryClose); imgDialogDictionaryClose.setOnClickListener(v -> dialog.dismiss()); ViewPager viewPager = (ViewPager) dialog.findViewById(R.id.dialogViewpager); setupViewPager(viewPager); TabLayout tabLayout = (TabLayout) dialog.findViewById(R.id.dialogTabs); tabLayout.setupWithViewPager(viewPager); dialog.show(); } private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new OneFragment(), "ONE"); adapter.addFragment(new TwoFragment(), "TWO"); adapter.addFragment(new ThreeFragment(), "THREE"); viewPager.setAdapter(adapter); } class ViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmentTitleList = new ArrayList<>(); public ViewPagerAdapter(FragmentManager manager) { super(manager); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } } 

Cuando ejecuto la aplicación, estoy recibiendo este error.

  E/FragmentManager: No view found for id 0x7f0e00d5 (com.example.page:id/dialogViewpager) for fragment OneFragment{eb2a3cc #1 id=0x7f0e00d5 android:switcher:2131624149:0} E/FragmentManager: Activity state: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.page, PID: 2710 java.lang.IllegalArgumentException: No view found for id 0x7f0e00d5 (com.example.page:id/dialogViewpager) for fragment OneFragment{eb2a3cc #1 id=0x7f0e00d5 android:switcher:2131624149:0} at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1107) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1643) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) at android.support.v4.view.ViewPager.populate(ViewPager.java:1272) at android.support.v4.view.ViewPager.populate(ViewPager.java:1120) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1646) at android.view.View.measure(View.java:18788) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) at android.view.View.measure(View.java:18788) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18788) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18788) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) at android.view.View.measure(View.java:18788) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1191) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:606) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Dialog_dictionary.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="?android:attr/actionBarSize" android:background="@drawable/dialog_title_bar"> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusableInTouchMode="true" /> <EditText android:id="@+id/edtDictionarySearch" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="25dp" android:layout_marginRight="10dp" android:layout_toLeftOf="@+id/imgDialogDictionaryClose" android:background="@android:color/transparent" android:drawableLeft="@mipmap/icn_search_white" android:drawablePadding="10dp" android:hint="@string/search" android:singleLine="true" android:textColor="@color/white" android:textColorHint="@color/white" android:textSize="@dimen/dialog_search_text_size" /> <ImageButton android:id="@+id/imgDialogDictionaryClose" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="15dp" android:background="@android:color/transparent" android:paddingLeft="10dp" android:paddingRight="10dp" android:src="@mipmap/icn_close" /> </RelativeLayout> <android.support.design.widget.TabLayout android:id="@+id/dialogTabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" app:tabMode="fixed" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/dialog_bg_area" android:padding="@dimen/dialog_inner_padding"> <android.support.v4.view.ViewPager android:id="@+id/dialogViewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </RelativeLayout> </LinearLayout> 

OneFragment.java

 public class OneFragment extends Fragment { public OneFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_one, container, false); } } 

Fragment_one.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Tab One" android:textSize="50dp" /> </LinearLayout> 

Creo que por lo que puedo recordar, la vista de contenido para el Diálogo no se agrega de inmediato. Se añade en el momento en que se muestra el cuadro de diálogo. Lo que podría intentar hacer es crear una subclase de diálogo y agregar un escucha de disposición global a su subclase de diálogo.

Cuando se dispara el GlobalLayoutListener, tome sus referencias en este punto y, a continuación, quite el oyente de diseño global para que no se vuelva a disparar.

 // in OnCreate() getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { //get references for viewPager viewPager = findViewById(R.id.dialogViewpager) //remove listener so it doesn't fire again getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); 

Actualizar:

En realidad, por lo que estoy pensando, sólo puede crear un diálogo normal y agregar el oyente de diseño a ese

 //note that dialog will need to be final to access it //in onGlobalLayout below or have a global reference in your class dialog.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { //get references for viewPager viewPager = findViewById(R.id.dialogViewpager) //remove listener so it doesn't fire again dialog.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); 

Así parece bien … aquí google dice evitar directamente la creación de instancias de Diálogo … Utilizar sus subclases … Creo que lo que está tratando de hacer puede ser hecho por DialogFragment … Espero que pueda ayudar

  • ¿Cómo puedo cambiar el aspecto del cuadro de diálogo ListPreference?
  • Cómo mostrar un ListFragment existente en un DialogFragment
  • Cambio de tema de diálogo para cada cuadro de diálogo
  • Cómo centralizar el diseño dentro de Android Dialog?
  • Devolución de llamada a notifyDataSetChanged
  • Problemas con el show de alertdialog en el fragmento android
  • Cómo mostrar Cuadro de diálogo de un método estático
  • Cuadro de diálogo personalizado en pantalla completa?
  • ¿Cómo configurar los parámetros de diseño en edittext en el diálogo?
  • Android - Personalizar el cuadro de diálogo con un diseño Xml
  • Cómo DialogFragment afecta el ciclo de vida de la actividad de llamada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.