Domanda

Sto creando alcune impostazioni di base per la mia applicazione Android e sto avendo alcuni problemi.Prima di tutto, non ho potuto capire come utilizzare il menu Triple-Dot in alto a destra della barra di azione per aprire le impostazioni.Quindi ho temporaneamente creato un pulsante che chiama choosesettings:

un pulsante

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

Questo è il codice per la mia classe di preferenza:

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);
 }
}
.

quale tipo di lavori.Ciò si traduce nel mio schermo in questo modo :.

questo

È stato utile?

Soluzione

Impostazioni nel menu Overflow

Per utilizzare le impostazioni nel menu Overflow, è necessario scavalcare il OnPisitItemselected Metodo, se non già e gestire l'ID corretto.

@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);
}
.

Sostituisci R.id.action_settings con l'ID della voce di menu.

Visualizzazione del preferencefragment

Come hai mostrato nell'immagine, la schermata delle preferenze si sovrappone al layout esistente.

Nota che è possibile sostituire un frammento solo che hai aggiunto dinamicamente .

Indovina lo XML per il tuo schermo che ha i pulsanti Guess Country e Guess Bandiere è stato gonfiato e non è stato aggiunto dinamicamente come frammento, quindi aggiungendo il frammento delle preferenze che verrà semplicemente visualizzato la sovrapposizione.

Soluzione

Un modo in cui puoi andare a questo è creando e avviando una nuova attività che caricherà il frammento delle preferenze.

Ad esempio, se crei la classe chiamata SettingsActivity che caricherà le preferenze (non dimenticare di aggiungere a 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();
    }
}
.

Quindi nel onOptionsItemSelected, è possibile avviare l'attività delle impostazioni.

@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);
}
.

Altrimenti, è necessario modificare il tuo layout principale per utilizzare qualcosa come un layout del telaio in modo da poter aggiungere / rimuovere / sostituire correttamente i frammenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top