2015-04-20 2 views
16

я правильно настроен на pref_general, значения для него, и код для запуска намерения:Настройки не открывается на планшете

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

Так что, если я попал в настройки опций во всплывающем его откроется правильно в моем телефоне/7" таблетки, но для больших таблеток, таких как 9" или более, это даст мне пустой экран всплывающее без ничего, написанного на нем, например, это:

enter image description here

Как я могу исправить эту проблему? В чем проблема, которая может произойти?

--- EDIT ---

Вот мой 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

Что такое 'characterList.this '? Покажите нам источник 'SettingsActivity'. –

+0

characterList.this используется контекст, SettingsActivity не существует, я показал pref_general вместо –

ответ

3

Найден ответ!

Все, что мне нужно было сделать после Android Developer Settings, состояло в том, что если бы я развивался для Android 3.0 (уровень API 11) и выше, мне нужно было использовать фрагменты предпочтений, которые являются еще одним классом, расширяющим PreferenceFragment.

Таким образом, код будет использовать эти параметры:

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

и старый SettingsActivity теперь должны продлить активность вместо PreferenceActivity, следующим образом:

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

Это очень вероятно, что вы установок просмотра в вашем XML для таблеток, которые не имеют фактические параметры просмотра элементов ,

Вы можете прочитать Android docs для получения дополнительной информации о поддержке нескольких видов. В принципе, правила, которые автоматически настраиваются, вызывают представление XML для планшетов, а не телефонов.

Это должно выглядеть примерно так:

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 

Либо удалите файл XML или обновить его, чтобы содержать параметры элементов, которые вы хотите.

+0

Спасибо за ваш быстрый ответ. У меня нет настроек активности для настроек, потому что все это сделано в XML/pref_general.xml, у которого нет тега таблеток. –

+0

Можете ли вы включить содержимое pref_general.xml и манифест андроида в свой вопрос? – Codeman

+0

Да, я сейчас –

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. 
Смежные вопросы