Home Menu

Menu



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 15/01/16, 10:49:39
Avatar de elamas
elamas elamas no está en línea
Usuario poco activo
Mensajes: 12
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
App bar en activity de settings

Hola,
tengo una aplicación simple con una actividad principal con app bar y una activity se settings.

El caso es que no sé poner el app bar en la activity de settings y yo creo que debería hacerlo para que una vez modificadas las settings el usuario pueda volver a la activity principal pulsando el botón de "up" del app bar y no al botón de back del teléfono como tiene que hacer ahora.

Para la activity de settings he seguido esto
http://developer.android.com/intl/es....html#Fragment

Para la app bar en el activity pricipal tengo esto en el layout
Código:
<android.support.design.widget.AppBarLayout
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:theme="@style/AppTheme.AppBarOverlay">

	<android.support.v7.widget.Toolbar
		android:id="@+id/toolbar"
		android:layout_width="match_parent"
		android:layout_height="?attr/actionBarSize"
		android:background="?attr/colorPrimary"
		app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>
y esto en el onCreate
Código:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
La Settings activity tiene esto
Código:
public class SettingsActivity extends AppCompatActivity {
    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();
    }
    public static class SettingsFragment extends PreferenceFragment {
        @override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.pref_general);
        }
    }
}
y el R.xml.pref_general
Código:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <EditTextPreference
        android:key="@string/pref_key_last_number"
        android:title="@string/pref_title_last_number"
        android:summary="@string/pref_summary_last_number"
        android:dialogTitle="@string/pref_dialog_title_last_number"
        android:defaultValue="@integer/pref_default_last_number"
        android:inputType="number"/>
</PreferenceScreen>
Es decir, no tengo un layout para la setting de activities y no sé cómo ponerle un app bar.

Gracias
Responder Con Cita


  #2  
Viejo 15/01/16, 13:12:30
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Establece un Layout al SettingsActivity que tenga Toolbar, y en vez de hacer el replace sobre android.R.id.content lo haces sobre un espacio reservado para tu Fragment en ese Layout.
Responder Con Cita
  #3  
Viejo 15/01/16, 13:18:45
Avatar de elamas
elamas elamas no está en línea
Usuario poco activo
Mensajes: 12
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Hola kriogeN,
muchas gracias por tu ayuda, lo pruebo en cuanto pueda y te cuento.

Un saludo
Responder Con Cita
  #4  
Viejo 15/01/16, 23:15:39
Avatar de elamas
elamas elamas no está en línea
Usuario poco activo
Mensajes: 12
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Hola kriogeN,
genial, me funciona con lo que me has dicho, muchas gracias.

Otra pregunta. ¿Se podría sacar la toolbar a un fragment para no duplicar código?

Ahora mismo tengo todo este código repetido en las dos activities y si fuera una app con más activities habría que copiarlo en todas

Código:
    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_settings);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.setLogo(R.drawable.ic_action_bar);

        // Get a support ActionBar corresponding to this toolbar
        ActionBar ab = getSupportActionBar();

        // Enable the Up button
        ab.setDisplayHomeAsUpEnabled(true);

        .....
    }

    @override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            //startActivity(new Intent(this, SettingsActivity.class));
            startActivity(new Intent(this, SettingsActivity.class));
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
No sé si se podría porque veo por ejemplo que el método setSupportActionBar(toolbar) es de la clase AppCompatActivity y a lo mejor no se puede en un Fragment.

Un saludo
Responder Con Cita
  #5  
Viejo 15/01/16, 23:39:21
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
La Toolbar tienes que asignarla al ActionBar de la Activity, y si además tiene menú también lo consume de la Activity.

Tener a la Toolbar como tal en un Fragment si puedes, no deja de ser un View como cualquier otro, pero el código en la Activity tendrías que seguir poniéndolo, como mínimo los 2 del OptionsMenu. No ganas mucho y quizás no sea muy eficiente.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 16/01/16, 22:27:35
Avatar de elamas
elamas elamas no está en línea
Usuario poco activo
Mensajes: 12
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Ok, por ahora lo dejo así. Si en el futuro estoy más suelto le daré una vuelta.

Gracias
Responder Con Cita
Respuesta

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

Herramientas

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: 20:48:28 (GMT +2)

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