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.
- Android webView - cómo cambiar el color de fondo del diálogo webView?
- Android - Transición de elementos compartidos en el cuadro de diálogo
- Error al inflar fragmento en el cuadro de diálogo la segunda vez
- Mostrar diálogo de la rueda giratoria mientras carga datos en Android
- ¿Por qué esto NO provoca un colapso? Estoy actualizando la interfaz de usuario de otro hilo
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>
- ¿Cuál es la diferencia entre AlertDialog.builder.setView y Dialog.setContentView?
- ¿Cómo programatically fijar el tema al cuadro de diálogo androide?
- EditTextPreference ¿Deshabilitar botones?
- Android - Cómo implementar un listbox como un diálogo modal / popup
- No puedo ver el progreso de spinner en ProgressDialog en Lollipop
- HoloEverywhere: barras de acción oscura y diálogos
- Obtener contexto dentro de onClick (DialogInterface v, int buttonId)?
- ¿Cómo determinar si se muestra cualquier diálogo del sistema?
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
- Visualización de la imagen del perfil FB en vista de imagen circular en la aplicación
- Poner la aplicación de nuevo al frente