2015-04-20 15 views
16

Ich habe richtig die pref_general, Werte für sie, und der Code ausführen, um die Absicht einzurichten:Einstellungen Aktivität öffnet sich nicht auf 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); 
} 

Also, wenn ich die Einstellungen in den Optionen getroffen Pop-up-es richtig in meinem Handy/7" öffnet Tablette, aber für größere Tabletten wie 9" oder mehr wird es geben sie mir einen leeren Bildschirm Pop-up ohne nichts darauf geschrieben, wie dies:

enter image description here

Wie kann ich dieses Problem beheben? Was ist das Problem, das dies bewirkt?

--- EDIT ---

Hier ist meine 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

Was 'characterList.this ist '? Zeigen Sie uns die Quelle von 'SettingsActivity'. –

+0

characterList.dies ist der verwendete Kontext, SettingsActivity existiert nicht, ich habe stattdessen pref_general angezeigt –

Antwort

3

Die Antwort gefunden!

Alles, was ich nach Android Developer Settings tun musste, war, dass, wenn ich für Android 3.0 (API Level 11) und höher entwickelte, ich Preference Fragments verwenden musste, was eine andere Klasse ist, die PreferenceFragment erweitert.

So würde der Code diese Parameter werden:

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

und die alte SettingsActivity jetzt Aktivität verlängern müssen statt PreferenceActivity wie folgt:

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

Es ist sehr wahrscheinlich, dass Sie haben ein Einstellungen für Tabletten in Ihrer XML anzeigen, die nicht Ihre aktuellen Einstellungen Elemente hat sehen .

Sie können die Android docs für weitere Informationen zur Unterstützung mehrerer Ansichten lesen. Grundsätzlich führen die Regeln, die automatisch eingerichtet werden, dazu, dass die XML-Ansicht für Tablets und nicht für Telefone verwendet wird.

Es sollte wie folgt aussehen:

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 

Entweder die XML-Datei entfernen oder aktualisieren Sie die Einstellungen Elemente enthalten, die Sie wollen.

+0

Danke für Ihre schnelle Antwort. Ich habe keine Aktivitätseinstellungen für die Einstellungen, da alles in XML/pref_general.xml erfolgt, das kein Tablet-Tag hat. –

+0

Können Sie den Inhalt von pref_general.xml und das Android-Manifest in Ihre Frage aufnehmen? – Codeman

+0

Ja, ich werde Moment –

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. 
Verwandte Themen