|
||
|
![]() |
![]() |
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
|
||||
|
||||
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> Código:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); 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); } } } 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> Gracias |
|
#2
|
||||
|
||||
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.
|
#3
|
||||
|
||||
Hola kriogeN,
muchas gracias por tu ayuda, lo pruebo en cuanto pueda y te cuento. Un saludo |
#4
|
||||
|
||||
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); } Un saludo |
#5
|
||||
|
||||
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. |
Gracias de parte de: | ||
#6
|
||||
|
||||
Ok, por ahora lo dejo así. Si en el futuro estoy más suelto le daré una vuelta.
Gracias |
![]() |
![]() |
||||||
|