PDA

Ver la Versión Completa : [ CONSULTA ] Error al regresar a una activity usando boto atras <-- de la actionBar


c2alvaro
18/11/15, 03:25:48
Saludos compañeros, les comento este problema, tengo 4 activitys (MainActivivy, Main2Activity, Main3Activity, Main4Activity) ya estan operativas y funcionan bien, pero ahora quiero usar el boton de (Atras) que aparece en la actionBar para regresar de una activity a la otra, Actualmene NO tengo ese boton agregado buscando por ahi encontre este codigo para colocar en el manifest y asi poder usar ese boton (<--): (parentActivityName con meta-data)<activity
android:name=".MainActivity"
android:theme="@style/AppTheme0" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Main2Activity"
android:label="@string/activity2"
android:theme="@style/AppTheme"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.alvarolapto.soafiandroid.MainActivity" />

</activity>
<activity
android:name=".Main3Activity"
android:label="@string/activity3"
android:theme="@style/AppTheme"
android:parentActivityName=".Main2Activity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.alvarolapto.soafiandroid.Main2Activity" />
</activity>
<activity
android:name=".Main4Activity"
android:label="@string/activity4"
android:theme="@style/AppTheme"
android:parentActivityName=".Main2Activity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.alvarolapto.soafiandroid.Main2Activity" />
</activity>

La logica de las actividades es la siguiente:

MainActivity=Pantalla de inicio
Main2Activity = presenta un listView poblado desde un WS, dependiendo de lo que se selecciona se muestra el
detalle en la Main3Activity o Main4Activity

Lo que me gustaria es regresar de la 3 o la 4 para la 2, cuando lo hago me da error, perdonen la ignorancia pero
esta correcto el modo como lo estoy haciendo? agrego algo del logcat, gracias por su ayuda. OJO usando el boton de la parte
inferior para volver atras no me da error

11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: FATAL EXCEPTION: main
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: Process: com.example.alvarolapto.soafiandroid, PID: 13091
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.alvarolapto.soafiandroid/com.example.alvarolapto.soafiandroid.Main2Activity }: java.lang.NullPointerException
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2412)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2470)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.access$900(ActivityThre ad.java:174)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1307)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:10 2)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:146)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.jav a:5593)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:1283)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:1099)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: Caused by: java.lang.NullPointerException
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at com.example.alvarolapto.soafiandroid.Main2Activity .onCreate(Main2Activity.java:41)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5 458)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1093)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2376)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2470)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.access$900(ActivityThre ad.java:174)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1307)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:10 2)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:146)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.jav a:5593)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:1283)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:1099)
11-17 21:42:17.237 13091-13091/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)

kaiser75
18/11/15, 12:50:46
Has puesto en tu "onOptionsItemSelected" el codigo "NavUtils.navigateUpFromSameTask(this);" ?, en el manifest en las actividades 3 y 4 en el codigo "android:value="com.example.alvarolapto.soafiandroid.Actividad2 " pones el nombre de la actividad a la que quieres volver, en tu caso la Actividad2, deberia funcionarte. De todos modos revisa en Main2Activity la linea 41 que es donde te da error.

El codigo <meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.alvarolapto.soafiandroid.TuActivity " /> no hace falta ponerlo en todas las actividades, solo en las que quieras usar el boton

c2alvaro
18/11/15, 19:29:18
Has puesto en tu "onOptionsItemSelected" el codigo "NavUtils.navigateUpFromSameTask(this);" ?, en el manifest en las actividades 3 y 4 en el codigo "android:value="com.example.alvarolapto.soafiandroid.Actividad2 " pones el nombre de la actividad a la que quieres volver, en tu caso la Actividad2, deberia funcionarte. De todos modos revisa en Main2Activity la linea 41 que es donde te da error.

El codigo <meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.alvarolapto.soafiandroid.TuActivity " /> no hace falta ponerlo en todas las actividades, solo en las que quieras usar el boton

Saludos Kaiser y gracias por tu respuesta, la primera parte no te entendi muy bien, sobre lo segundo para navegar entre las actividades encontre que hay que colocar
android:parentActivityName=".MiActivity"

<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.android.MyApp.app.MiActivity" />
en el manifest, y asi lo hice lo coloque en las actividades que quiero usar ese boton y efectivamente aparece el boton atras en la actionBar, ahora sabes que solo colocando android:parentActivityName=".Main2Activity"tambien funciona sin colocar el <meta-data> Ok hasta aca todo bien, la primera actividad1 carga pide datos y pasa a la segunda actividad2 enviando los datos por intent, la segunda actividad2 arranca recibe los datos por intent y llena un listView desde un WS, al marcar un item del listView abro la actividad3 y muestro info cuando y cuando le doy al boton de atras (<--) de la actionBar quiero regresar a la segunda actividad2 pero da el error . Ahora te pregunto estimado compañero EXISTE UN PROBLEMA con el INTENT de la actividad2 es decir estara perdiendo los datos he leido algo sobre eso y quisiera saber antes de ponerme a inventar ja ja ja? Nota uso activitys y no fragments