2017-02-02 3 views
1

Я слежу за Android sample с документацией для разработки новой (относительно простой) клавиатуры. В этот момент я застрял в изменении конфигурации (например, тема, textSize или бит сложного материала), который требует, чтобы IME воссоздал себя.Как справиться с изменением конфигурации на клавиатуре Android (IME)?

public class ImePreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setTheme(R.style.AppTheme_WithActionBar); 
     super.onCreate(savedInstanceState); 
     PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this); 
    } 

    @Override 
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
     // reload ime 
     Log.d("anbani", "Stopping service " + String.valueOf(stopService(new Intent(this, SoftKeyboard.class)))); 
     Log.d("anbani", "prefs changed"); 
    } 



    ... 
} 

Это не поможет. Значение StopService возвращается true, но эффекта нет.

Есть ли какой-нибудь трюк, чтобы получить экземпляр клавиатуры пакета без предварительной ссылки на него? Или я пропустил что-то простое здесь?

Любые советы будут высоко оценены!

ответ

0

Решение:

@Override public View onCreateInputView() { 
    // load preferences 

    return mInputView; 
} 


@Override public void onStartInputView(EditorInfo attribute, boolean restarting) { 
    super.onStartInputView(attribute, restarting); 

    setInputView(onCreateInputView()); 

    ... 
} 
Смежные вопросы