Visualizza le impostazioni usando "Impostazioni" nel menu Triple-Dot
-
21-12-2019 - |
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:
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 :.
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.