IllegalStateException de Android: Fragmento no adjunto a Activity webview
Así que soy nuevo en la escritura de aplicaciones para Android, y estoy tratando de trabajar en una aplicación de práctica que espero que pueda convertirse en algo más tarde. Tuve 3 pestañas en la barra de acción que funcionó bien antes de que decidí tratar de añadir webview a uno de ellos. Ahora se bloquea con una IllegalStateException. Y como no sé demasiado sobre android en este momento, no puedo entender lo que está mal.
La actividad principal:
- Vista de árbol de Android
- Varias llamadas a CountDownLatch.await (int) con tiempo de espera
- Android OutOfMemory pero con memoria de sobra
- Migración a Android Studio
- Cómo cambiar el tamaño de Bitmaps de la manera óptima en Android?
private ViewPager viewPager; private TabsPagerAdapter mAdapter; private ActionBar actionBar; private String[] tabs = { "Web", "Facebook", "Twitter" }; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialization viewPager = (ViewPager) findViewById(R.id.pager); actionBar = getActionBar(); mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(mAdapter); actionBar.setHomeButtonEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // Adding Tabs for (String tab_name : tabs) { actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this)); } /** * on swiping the viewpager make respective tab selected * */ viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { // on changing the page // make respected tab selected actionBar.setSelectedNavigationItem(position); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // on tab selected // show respected fragment view viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { }
El WebFragmento con la webview:
public class WebFragment extends Fragment { private String url = getString(R.string.website); //@Override //public void onActivityCreated(Bundle savedInstanceState) //{ //super.onActivityCreated(savedInstanceState); //} @SuppressLint("SetJavaScriptEnabled") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.web_fragment, container, false); WebView tolerableWebView = (WebView) getView().findViewById(R.id.webview); tolerableWebView.getSettings().setJavaScriptEnabled(true); tolerableWebView.loadUrl(url); return rootView; } }
El TabsPagerAdapter:
public class TabsPagerAdapter extends FragmentPagerAdapter { public TabsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int index) { switch (index) { case 0: // Top Rated fragment activity return new WebFragment(); case 1: // Games fragment activity return new FacebookFragment(); case 2: // Movies fragment activity return new TwitterFragment(); } return null; } @Override public int getCount() { // get item count - equal to number of tabs return 3; } }
El fragmento web xml
<?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> </WebView>
La actividad principal xml:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent"/>
Cualquier ayuda sería genial! Gracias
- Observable / Observador no funciona?
- ¿Cómo puedo crear una vista de contenedor personalizada en Android?
- Android: Firebase toma demasiado tiempo para buscar datos
- Button.setBackground (dibujable fondo) lanza NoSuchMethodError
- ¿Cuál es la mejor práctica para redondear un flotador a 2 decimales?
- Preciso metrónomo para Android
- Cómo cerrar una aplicación de mi aplicación
- Android: Configurar onClickListener en una parte del texto de un TextView - Problema
Generalmente obtienes ese error cuando intentas realizar un trabajo después de que el Fragmento ya no esté conectado a la Actividad. En la devolución de llamada que activa la IllegalStateException, agregue una comprobación para isAdded: http://developer.android.com/reference/android/app/Fragment.html#isAdded ()
if(!isAdded()) { return; }
- BitmapFactory.decodeResource devuelve un mapa de bits mutable en Android 2.2 y un mapa de bits inmutable en Android 1.6
- Obtenga el valor de preferencias compartidas de Android en la clase activity / normal