2015-04-20 16 views
16

ho impostato correttamente il pref_general, i valori per esso, e il codice per eseguire l'intento:Impostazioni non si apre su tablet

@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) { 
     Intent intecao = new Intent(characterList.this, SettingsActivity.class); 
     startActivity(intecao); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

Quindi, se ho colpito le impostazioni nelle opzioni pop-up che si aprirà correttamente nel mio telefono/tablet da 7" , ma per le tavolette più grandi come 9" o più essa mi darà una schermata vuota pop-up, senza nulla di scritto su di esso, come ad esempio questo:

enter image description here

Come posso risolvere questo problema? Qual è il problema che rende questo accada?

--- EDIT ---

Ecco la mia pref_general:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory 
     android:title="Made by Megafuji and Kintups"/> 

    <ListPreference 
     android:key="console1" 
     android:title="Console" 
     android:summary="Select your console" 
     android:defaultValue="1" 
     android:entries="@array/pref_example_list_titles" 
     android:entryValues="@array/pref_example_list_values" 
     android:negativeButtonText="@null" 
     android:positiveButtonText="@null" /> 

    <ListPreference 
     android:key="viewMode" 
     android:title="View Mode" 
     android:summary="Select your View Mode" 
     android:defaultValue="1" 
     android:entries="@array/pref_viewMode_list_titles" 
     android:entryValues="@array/pref_viewMode_list_values" 
     android:negativeButtonText="@null" 
     android:positiveButtonText="@null" /> 

    <ListPreference 
     android:key="charsize" 
     android:title="Icons Size" 
     android:summary="Select character screen size for text and icons." 
     android:defaultValue="1" 
     android:entries="@array/pref_character_size" 
     android:entryValues="@array/pref_character_size_value" 
     android:negativeButtonText="@null" 
     android:positiveButtonText="@null" /> 

    <ListPreference 
     android:key="tamanhoLetra" 
     android:title="Font Size" 
     android:summary="Select font size you want for move list." 
     android:defaultValue="1" 
     android:entries="@array/pref_font_size" 
     android:entryValues="@array/pref_font_size_value" 
     android:negativeButtonText="@null" 
     android:positiveButtonText="@null" /> 

    <CheckBoxPreference 
     android:key="screenDimming" 
     android:title="Disable screen dimming in this app" 
     android:summary="Disable screen locking/turning off." 
     android:defaultValue="false" 
     /> 

    <CheckBoxPreference 
     android:key="frame" 
     android:title="Show Frame Date" 
     android:summary="Show Frame Data for All Moves " 
     android:defaultValue="false" 
     /> 

    <CheckBoxPreference 
     android:key="damage" 
     android:title="Show Damage" 
     android:summary="Show Damage for All Moves " 
     android:defaultValue="false" /> 

    <PreferenceCategory 
     android:title="Contact us: [email protected]"/> 
</PreferenceScreen> 
+0

Qual è 'characterList.this '? Mostraci la fonte di "ImpostazioniAttività". –

+0

characterList.questo è il contesto utilizzato, SettingsActivity non esiste, ho mostrato pref_general invece –

risposta

3

Trovato la risposta!

Tutto quello che dovevo fare in seguito a Android Developer Settings era che se stavo sviluppando per Android 3.0 (livello API 11) e superiore avevo bisogno di usare i frammenti di preferenze che è un'altra classe che estende PreferenceFragment.

Quindi il codice sarebbe utilizzando questi parametri:

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

e il vecchio SettingsActivity deve ora estendersi attività invece di PreferenceActivity, come segue:

public class SettingsActivity extends Activity { 
    @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(); 
    } 
} 
0

E 'molto probabile che si dispone di un impostazioni di visualizzazione in XML per compresse che non hanno le impostazioni attuali visualizzare elementi .

È possibile leggere Android docs per ulteriori informazioni sul supporto di più viste. Fondamentalmente, le regole che vengono impostate automaticamente causano la visualizzazione XML dei tablet anziché dei telefoni.

Dovrebbe essere qualcosa di simile:

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra-large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra-large in landscape orientation 

O rimuovere il file XML o aggiornarlo per contenere gli elementi di impostazioni desiderate.

+0

Grazie per la tua risposta veloce. Non ho alcuna attività impostata per le impostazioni, perché è tutto fatto in XML/pref_general.xml che non ha alcun tag tablet. –

+0

Puoi includere il contenuto di pref_general.xml e il manifest Android nella tua domanda? – Codeman

+0

Sì, lo farò –

1
  public class SettingActivity extends PreferenceActivity 
      { 
       @Override 
       protected void onCreate(Bundle savedInstanceState) 
       { 
        setTheme(android.R.style.Theme_Holo_Light_DarkActionBar); 
        requestWindowFeature(Window.FEATURE_ACTION_BAR); 
        super.onCreate(savedInstanceState); 

        FragmentManager mFragmentManager = getFragmentManager(); 
        FragmentTransaction mFragmentTransaction = mFragmentManager 
          .beginTransaction(); 
        PrefsFragment mPrefsFragment = new PrefsFragment(); 
        mFragmentTransaction.replace(android.R.id.content, mPrefsFragment); 
        mFragmentTransaction.commit(); 
       } 

       public static class PrefsFragment extends PreferenceFragment { 

       @Override 
       public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 

        // Load the preferences from an XML resource 
        addPreferencesFromResource(R.xml.preferences); 
        String userName; 
        String tmpemail; 

        findPreference("profile_setting_username").setTitle(userName); 
        findPreference("profile_setting_username").setSummary(strHtml); 
       } 
      } 
      } 

This is how I have implemeted my Settings Activity and it works on all type of devices. 
Problemi correlati