Pregunta

Estoy configurando algunas configuraciones básicas para mi aplicación de Android y tengo algunos problemas.En primer lugar, no pude entender cómo usar el menú de tres puntos en la parte superior derecha de la barra de acciones para abrir Configuración.Así que creé temporalmente un botón que llama a elegirConfiguración:

a button

    public void chooseSettings(View view) {
    getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
}

Este es el código para mi clase PreferenceActivity:

public class PreferenceActivity extends PreferenceFragment {
@Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Load the preferences from an XML resource
    addPreferencesFromResource(R.xml.preferences);
 }
}

¿Qué tipo de obras?Eso da como resultado que mi pantalla se vea así:.

this

¿Fue útil?

Solución

Configuración en el menú adicional

Para utilizar la Configuración en el menú adicional, debe anular la configuración onOptionsItemSelected método, si aún no lo ha hecho y manejar la identificación correcta.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        // Code to show settings.
        return true;
    }
    return super.onOptionsItemSelected(item);
}

Reemplazar R.id.action_settings con la identificación de su elemento de menú.

Mostrando el fragmento de preferencia

Como ha mostrado en su imagen, su pantalla de preferencias se superpone al diseño existente.

Tenga en cuenta que solo puede reemplazar un fragmento que agregó dinamicamente.

Supongo que el xml de su pantalla que tiene los botones Guess Country y Guess Flags estaba inflado y no se agregó dinámicamente como un fragmento, por lo que al agregar el fragmento de preferencia simplemente se mostraría superpuesto.

Solución

Una forma de hacerlo es creando e iniciando una nueva actividad que cargará su fragmento de preferencias.

Por ejemplo, si crea una clase llamada SettingsActivity que cargará las preferencias (No olvides agregarlas al AndroidManifest):

public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
    }
}

Entonces en tu onOptionsItemSelected, puede iniciar la actividad de configuración.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        Intent intent = new Intent(this, SettingsActivity.class);
        startActivity(intent);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

De lo contrario, necesitarás cambiar tu diseño principal para usar algo como un diseño de marco para que puedas agregar/eliminar/reemplazar fragmentos correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top