entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Boton Volver - Android

Hola buenas tardes amigos desarrolladore,
Estoy intentan implementar el botón volver en el Actionbar de la aplicación que estoy desarrollando y me consigo con un error, que parece ser tonto...pero no he logrado solventarlo.

Estoy en una actividad llamada "LeerActivity" y necesito volver a mi MainActivity...
Acá el código:

LeerActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_leer); 
    titulo = (TextView) findViewById(R.id.tv_tituloInternaNota);
    seccion = (TextView) findViewById(R.id.tv_seccionInternaNota);  
    descripcion = (TextView) findViewById(R.id.tv_descripcionInternaNota);
    b = getIntent().getExtras();        
    //String url= b.getString("url");
    setTamanoFuente();
    titulo.setText(b.getString("titulo"));
    seccion.setText(b.getString("seccion"));        
    descripcion.setText(b.getString("descripcion"));        
    getImageToDisplay(b.getString("imagen"));           
    ActionBar ab = getSupportActionBar();       
    ab.setTitle(R.string.app_name);                 
    ab.setSubtitle(b.getString("seccion"));
    ab.setDisplayHomeAsUpEnabled(true);
}

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        b = getIntent().getExtras();

        Log.d(Global.TAG, "okFromSplash "+String.valueOf(b.getBoolean("okFromSplashScreen")));
        Log.d(Global.TAG, "exceptionFromSplash "+String.valueOf(b.getBoolean("exceptionFromSplashScreen")));
        if(b.getBoolean("okFromSplashScreen")){         
            AsyncPostDownload apd = new AsyncPostDownload(this);
            apd.execute();          
        }else{
            if(b.getBoolean("exceptionFromSplashScreen")){
                AlertDialog.Builder builder = new AlertDialog.Builder(getBaseContext());
                builder.setTitle("Error al Iniciar");
                builder.setMessage("Hubo un error en la descarga iniciar, volveremos a intentarlo");
                builder.setPositiveButton(R.string.app_name, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        DownloadAllXML daxml = new DownloadAllXML();
                        daxml.execute();
                    }
                });
                builder.create();           
            }
        }           
        setContentView(R.layout.swipe_tab);             
        PagerAdapter pAdapter = new PagerAdapter(getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(pAdapter);
        mViewPager.setOnPageChangeListener(this);

        ActionBar ab = getSupportActionBar();
        ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);       
        String[] arraySec;
        arraySec = getResources().getStringArray(R.array.secciones);
        for (int i = 0; i < arraySec.length; i++) {         
            String s = arraySec[i];
            Tab t = ab.newTab()
                    .setText(s)
                    .setTabListener(this);
            ab.addTab(t);
            Log.d(Global.TAG,"Tab "+s+" creado");
        }       
    }

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.notitarde.lector"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />    
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>    

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
        <activity
            android:name="com.notitarde.lector.SplashScreenActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.notitarde.lector.MainActivity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name="com.notitarde.lector.LeerActivity"
            android:label="@string/app_name"      
            android:parentActivityName="com.notitarde.lector.MainActivity"      
            android:uiOptions="splitActionBarWhenNarrow" >
            <meta-data 
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.notitarde.lector.MainActivity"/>
            <meta-data
                android:name="android.support.UI_OPTIONS"
                android:value="splitActionBarWhenNarrow" />
        </activity>
        <activity
            android:name="com.notitarde.lector.PreferenciasActivity"
            android:label="@string/config_app_titulo" >
        </activity>

    </application>

</manifest>

Al correr la app e intentar devolverme usando el botón, retorna el siguiente error:
Error_btn_back

Y como podrán ver estoy declarando la actividad en el manifest, ¿Que estaré haciendo mal?
De ante mano muchas gracias, y saludos!

0voto

jonatancastro1 comentado

hay una excepción java.lang.NullPonterException en la linea 53 o 54 de tu clase MainActivity podrías colocar esas lineas especificamente para así tal vez encontrar la solución, de momento pienso que puede ser un problema de inicialización o referencias.

0voto

Villanuevand comentado

enter image description here

0voto

jonatancastro1 comentado

Tal vez encerrando en un try la parte del código que arroja la excepción puedas obtener mas información del problema, prueba algo así:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.swipe_tab);             
    PagerAdapter pAdapter = new PagerAdapter(getSupportFragmentManager());
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(pAdapter);
    mViewPager.setOnPageChangeListener(this);

    ActionBar ab = getSupportActionBar();
    ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);       
    String[] arraySec;
    arraySec = getResources().getStringArray(R.array.secciones);
    for (int i = 0; i < arraySec.length; i++) {         
        String s = arraySec[i];
        Tab t = ab.newTab()
                .setText(s)
                .setTabListener(this);
        ab.addTab(t);
        Log.d(Global.TAG,"Tab "+s+" creado");
    }
    try {
        b = getIntent().getExtras();
        Log.d(Global.TAG, "okFromSplash "+String.valueOf(b.getBoolean("okFromSplashScreen")));
        Log.d(Global.TAG, "exceptionFromSplash "+String.valueOf(b.getBoolean("exceptionFromSplashScreen")));
        if(b.getBoolean("okFromSplashScreen")){         
            AsyncPostDownload apd = new AsyncPostDownload(this);
            apd.execute();          
        }else{
            if(b.getBoolean("exceptionFromSplashScreen")){
                AlertDialog.Builder builder = new AlertDialog.Builder(getBaseContext());
                builder.setTitle("Error al Iniciar");
                builder.setMessage("Hubo un error en la descarga iniciar, volveremos a intentarlo");
                builder.setPositiveButton(R.string.app_name, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        DownloadAllXML daxml = new DownloadAllXML();
                        daxml.execute();
                    }
                });
                builder.create();           
            }
        }
    }catch(NullPointerException e){
        e.printStackTrace();
    }
}

Saludos.

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola villanuevand,

te dejo acá un enlace a un tutorial en dos partes que explica como pasar de un Activity a otra, incluso pasando parámetros entre ellas.

http://android.alorse.net/2012/11/27/crear-actividades-i/
http://android.alorse.net/2012/11/27/como-crear-actividades-activity-y-pasar-de-una-a-la-otra-en-android-ii/

A mi me sirvió mucho y espero que a vos también.

Saludos!

0voto

Villanuevand comentado

Hola @Leonardo-Tadei muchas gracias por la información.

Pero mi inquietud no se resuelve con esta información, que siempre es bueno saber.
Mi problema radica en la utilización del setDisplayHomeAsUpEnabled(true) que al parecer no esta bien implementado.

No sé porque creo que tiene responsabilidad las siguientes opciones del Manifest....

<activity android:name="com.notitarde.lector.SplashScreenActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

0voto

Leonardo-Tadei comentado

Hola,

puede variar con diferentes versiones de la API, pero para Android 4.1 Versión 16 tenés que definir el acceso entre actividades: http://developer.android.com/training/implementing-navigation/ancestral.html

En ese manual también hay sintaxis para versiones anteriores de la API. Tendrás que adecuar la declaración para los nombres de tu app y activities...

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta