Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 19/01/15, 09:41:08
Avatar de carlesqf
carlesqf carlesqf no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: oct 2014
Localización: Barcelona
Mensajes: 11
Modelo de smartphone: galaxy SIII mini
Tu operador: ONO
Mencionado: 0 comentarios
Tagged: 0 hilos
Menú de opciones en un Fragment

Buenos días.
Me he metido en serio con todo esto de los fragment y cada día me encuentro con problemas nuevos.
El último está relacionado a la navegación entre fragmentos.
Todos ya conocereis que uno de los usos más normales para los fragmentos consiste en tener dos (A y B), situados en dos actividades diferentes. En A se ve el equivalente al índice de un libro. Escojo una de las entradas y el capítulo correspondiente aparece en B.
Esto funciona perfectamente.
Lo que yo quiero ahora es volver a A sin tener que usar los botones del teléfono, sino con las opciones del menú al que hago referencia en el título del mensaje.
Y no he conseguido que aparezca. Y he probado todo lo que he encontrado buscando por internet.
Anexo a continuación el código de la actividad B, el fragmento B, y el archivo del menú.
Espero que me digais que falla:

Activity B (PantallaContingutCapitols):
[php]package com.carlesqf.laguerra;

import *.*;

public class PantallaContingutCapitols extends Activity{
SharedPreferences adrecafoto;
SharedPreferences.Editor NomEditor;
Intent anarfotos;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_contingutcapitols );
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransacton = fragmentManager.beginTransaction();

FragmentContingutCapitols FragContCap = new FragmentContingutCapitols();
Bundle b = new Bundle();
int posicio=getIntent().getIntExtra("position", 0);
b.putInt("position", posicio);
FragContCap.setArguments(b);
fragmentTransacton.add(R.id.container_contingut_ca pitols, FragContCap);
fragmentTransacton.commit();
// Declaració de "adrecafoto" i "NomEditor".
anarfotos=new Intent(this,PantallaFotos.class);
adrecafoto=getSharedPreferences("llocadrecafoto",0 );
NomEditor=adrecafoto.edit();
}
}[/php]Fragment B(FragmentContingutCapitols):

[php]package com.carlesqf.laguerra;

import *.*;

public class FragmentContingutCapitols extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v= inflater.inflate(R.layout.activity_contingutcapito ls, null);
// Getting the bundle object passed from "PantallaContingutCapitols"
Bundle b = getArguments();
String nomcap=LlistaCapitols.name[b.getInt("position")];
if (nomcap.contains("1700-1701 Les causes del conflicte:"))
v = inflater.inflate(R.layout.capitol1700, null);
else if ((nomcap.contains("1702 – Primers combats. Itàlia i front del Rin:")))
v = inflater.inflate(**, null);
return v;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fotos, menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
// do s.th.
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}[/php]"menu_fotos.xml":
[php]<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >

<item
android:id="@+id/tancar_pantalla"
android:icon="@drawable/iconacasa"
android:title="opciotancar"
app:showAsAction="ifRoom" >
</item>

</menu>[/php]
Responder Con Cita


  #2  
Viejo 20/01/15, 07:32:10
Avatar de rafaxplayer
rafaxplayer rafaxplayer no está en línea
Miembro del foro
Mensajes: 224
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Pare que el menú aparezca en la actividad desdeun fragment tienes que usar setHasOptionsMenu(true); normalmente se llama cuando la actividad esta creada yo lo suelo usar en OnCreate del fragment.

Con esto el menú se muestra en la actividad incluso si la actividad ya tiene un menú este se suma al de la actividad.
Responder Con Cita
  #3  
Viejo 20/01/15, 10:37:05
Avatar de oxot
oxot oxot no está en línea
Usuario muy activo
Mensajes: 741
 
Fecha de registro: may 2010
Localización: Santiago
Mensajes: 741
Modelo de smartphone: Xiaomi RedRice
Versión de ROM: MIUI V8
Tu operador: Pepephone
Mencionado: 2 comentarios
Tagged: 2 hilos
Cita:
Originalmente Escrito por carlesqf Ver Mensaje
Código:
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_settings:
           // do s.th.
           return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
Supongo que tendrás que poner R.id.tancar_pantalla en vez de action_setings (que es lo que pone por defecto Android).
En lo que has puesto no soy capaz de encontrar otro defecto. Prueba a poner el menú declarando showAsAction=always para forzar a que se dibuje. Dependiendo de tu api objetivo, el menú puede no responder al botón menú del teléfono (algo que he visto que ocurre con las nuevas app compat de lollipop) pero deberías ver los 3 puntitos en la derecha de todo de tu Toolbar o ActionBar.
Adjunta una imagen de la app para que la veamos
Responder Con Cita
  #4  
Viejo 20/01/15, 11:13:48
Avatar de carlesqf
carlesqf carlesqf no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: oct 2014
Localización: Barcelona
Mensajes: 11
Modelo de smartphone: galaxy SIII mini
Tu operador: ONO
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por rafaxplayer Ver Mensaje
Pare que el menú aparezca en la actividad desdeun fragment tienes que usar setHasOptionsMenu(true); normalmente se llama cuando la actividad esta creada yo lo suelo usar en OnCreate del fragment.

Con esto el menú se muestra en la actividad incluso si la actividad ya tiene un menú este se suma al de la actividad.
Gracias!

Pero ahora tengo un menú de opciones tradicional, el que aparece en la parte inferior de la pantalla cuando aprieto el botón del telèfono.
Y yo lo que quiero conseguir es un "Action Bar menu", los que aparecen en la barra superior, a la derecha del icono y el nombre de la aplicación. La que se puede ver en la captura de pantalla que se encuentra a continuación.
Imágenes Adjuntas
Tipo de Archivo: jpg Screenshot_2015-01-20-11-06-28.jpg (98.4 KB, 25 visitas)

Última edición por carlesqf Día 20/01/15 a las 11:16:23
Responder Con Cita
  #5  
Viejo 20/01/15, 14:05:20
Avatar de oxot
oxot oxot no está en línea
Usuario muy activo
Mensajes: 741
 
Fecha de registro: may 2010
Localización: Santiago
Mensajes: 741
Modelo de smartphone: Xiaomi RedRice
Versión de ROM: MIUI V8
Tu operador: Pepephone
Mencionado: 2 comentarios
Tagged: 2 hilos
A partir de la API 11, si estás usando ActionBar, el menú se pone automáticamente en la AB (supongo que habrás hecho que tu actividad herede de ActionBarActivity, si no malo).
El resto lo veo tal cual lo hago yo...
Responder Con Cita
  #6  
Viejo 21/01/15, 09:36:31
Avatar de carlesqf
carlesqf carlesqf no está en línea
Usuario novato en la web
Mensajes: 11
 
Fecha de registro: oct 2014
Localización: Barcelona
Mensajes: 11
Modelo de smartphone: galaxy SIII mini
Tu operador: ONO
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por oxot Ver Mensaje
A partir de la API 11, si estás usando ActionBar, el menú se pone automáticamente en la AB (supongo que habrás hecho que tu actividad herede de ActionBarActivity, si no malo).
El resto lo veo tal cual lo hago yo...
Ya lo prové.

Si en lugar de [PHP]public class PantallaContingutCapitols extends Activity{}[/PHP]
pongo [php]public class PantallaContingutCapitols extends ActionBarActivity {}[/php], siendo "PantallaContingutCapitols" la actividad desde donde llamo al fragment, la aplicación peta.

Que supongo que es esto lo que quieres decir que mi actividad herede de ActionBarActivity.

Última edición por carlesqf Día 21/01/15 a las 09:41:13
Responder Con Cita
  #7  
Viejo 22/01/15, 23:23:53
Avatar de oxot
oxot oxot no está en línea
Usuario muy activo
Mensajes: 741
 
Fecha de registro: may 2010
Localización: Santiago
Mensajes: 741
Modelo de smartphone: Xiaomi RedRice
Versión de ROM: MIUI V8
Tu operador: Pepephone
Mencionado: 2 comentarios
Tagged: 2 hilos
correcto, pues para tener el action bar no te queda más remedio que heredar de ActionBarActivity.
Has importado correctamente las librerías al proyecto???
(las appcompat me refiero: busca en google que te explican cómo hacerlo en función de tu IDE)

Danos más pistas sobre tu error, si no es difícil...
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 06:43:58 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007