2012-06-18 25 views
9

Estoy ejecutando la clase maswebview y me gustaría terminar solo esta actividad. Intenté maswebview.this.finish() pero cuando se ejecuta, la aplicación se ha cerrado. Luego, si configuro una nueva vista para el contenido de la pestaña, se carga correctamente y webviewmas desaparece, pero solo por un tiempo, luego aparece de nuevo encajando en pantalla completa. ¿Cómo terminar maswebview por completo? GraciasKandroid finish current activity causes app close

public void onClick(View arg0) 
      { 
       /* 
       Intent intent = getIntent(); 
       intent.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME); 
       startActivityForResult(intent, 1); 
       Intent intentmas = new Intent (maswebview.this, mas.class); 
       intentmas.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
       View vista = getLocalActivityManager().startActivity("maswb", intentmas).getDecorView(); 
       setContentView(vista); */ 

       maswebview.this.finish(); 
+3

agregue el seguimiento de la pila completa de su excepción – Houcine

+2

debe agregar aquí el código más relevante, esto no es suficiente para decir algo. – Sajmon

+0

sí, lo siento, por favor ver ediciones. No hay excepción en logcat, la aplicación está cerrada sin errores – Jaume

Respuesta

5

¿Tiene alguna otra actividad de su aplicación en la pila en el momento de llamar acabado()? Si no lo hace, querrá comenzar la actividad deseada en lugar de finalizar la actual.

Pero en realidad me parece que estás tratando de lograr algo que se pueda simplificar. ¿Puedes proporcionar más información sobre la tarea que tienes entre manos y la estructura de tu aplicación con la que intentas solucionarlo?

Según lo que ha dicho, parece que tiene una IU con pestañas y está intentando mostrar una vista web en una de las pestañas, y luego ocultarla.

En primer lugar, no veo por qué quieres la vista web en una actividad separada. Me parece que podría tenerlo en el diseño de una de las pestañas y simplemente llamar a setVisibility (GONE) para ocultarlo.

Segundo - y esto es importante - Parece que usted está tratando de poner en práctica las pestañas del vieja manera - TabWidget, TabHost, etc. Desde nido de abeja ha sido puesto en libertad, hay mucho más conveniente forma de implementar la interfaz de usuario con pestañas - Action Bar Tabs and Fragments: ese enfoque es mucho más conveniente y hará obsoletos los problemas de su webview: hay una cosa llamada WebViewFragment que es básicamente una WebView pero más inteligente: manejará su propio ciclo de vida con el mínimo esfuerzo requerido (es decir, pause when removed, resume when added) Tomará un poco de esfuerzo para estudiar Fragmentos, pero vale la pena. Puede obtener Fragments API para sdks pre-Honeycomb android como biblioteca estática: se llama android-support-v4 y puede descargarlo en el Administrador de Android SDK.

+0

¡WebViewFragment fue un punto de partida para llegar a él!Aprecio mucho tu ayuda – Jaume

+0

De nada, me alegro de poder ayudarte. –

2

¿Está llamando "maswebview.this.finish();" antes de que la nueva actividad se inicie?

Además, si desea iniciar esta nueva actividad sin que exista la actividad anterior, puede agregar android: nohistory = "true" a su manifest.xml. Esto causará que la actividad actual sea la única actividad en la cola. Ver HERE

Debe proporcionarnos un poco más de información para comprender mejor qué está sucediendo exactamente.

Espero que esto ayude.

+0

ambos métodos no funcionan por completo, pero un buen enlace como punto de partida ... +1 – Jaume

0

Try siguiente código

@Override 
     public void onBackPressed() { 
     if(childView != null && parentLayout.getChildCount()==2){ 
      childView.stopLoading(); 
      parentLayout.removeViewAt(parentLayout.getChildCount()-1); 
      if(webView.getVisibility() == View.GONE) 
       webView.setVisibility(View.VISIBLE); 
     }else{   
      super.onBackPressed(); 
     } 
0

¿Tiene una actividad principal que está lanzando ésta? Si es así, asegúrese de no llamar a finish() después de iniciar maswebview, de esa forma la actividad principal permanecerá en la pila. Una vez que maswebview salga, onResume se invocará para su actividad principal.