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

Respuesta
 
Herramientas
  #1  
Viejo 15/01/16, 10:49:39
Array

[xs_avatar]
elamas elamas no está en línea
Usuario poco activo
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar

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
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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
Array

[xs_avatar]
elamas elamas no está en línea
Usuario poco activo
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar

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
Array

[xs_avatar]
elamas elamas no está en línea
Usuario poco activo
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar

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
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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
Array

[xs_avatar]
elamas elamas no está en línea
Usuario poco activo
 
Fecha de registro: dic 2015
Mensajes: 12
Tu operador: Movistar

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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 00:02:09 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /