Espaço vazio quando eu retornar à atividade (teclado virtual forçado)

eu tenho umActionView com o item de menu noActionBar (usandoActionBarSherlock), Sou capaz de exibirEditText como um campo de pesquisa. É uma entrada para lançar outroActivity com umCustomView no ActionBar que exibe o mesmo layout (eu não uso nada para forçar oSoftKeyboard para aparecer nesta segunda atividade, não há problema aqui). Quando eu quero fazer com que o teclado virtual apareça / desapareça automaticamente quando a visualização se desfaz na primeira atividade, eu uso:

método openKeyboard

mImm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);  

método closeKeyboard

mImm.hideSoftInputFromWindow(edittext.getWindowToken(), 0); 

Eu uso oActionExpandListener para fazer o SoftKeyboard aparecer ou desaparecer quando oView expande ou colapsa. Com estes dois métodos acima, tenho o resultado esperado. Eu encontrei isso em várias perguntas sobre SO (especialmente emFeche / oculte o teclado virtual do Android eMostrando o teclado virtual para SearchView na ActionBar ouForçando o teclado suave aberto).

Só pra entender, quando eu useiSHOW_IMPLICIT ouSHOW_FORCED sozinho, não teve efeito nas versões inferiores (como 2. +). O EditText estava focado, mas o teclado não apareceu (então, você acha que foi uma coisa ruim). Em versões recentes (como 4. + por exemplo), foi um bom efeito e sem problemas. Então, forcei o teclado a aparecer com ométodo openKeyboard acima.

Agora eu tenho alguns problemas com isso ...
Nas versões inferiores, eu tenho espaço "vazio" antes e depois do teclado criado / destruído, eu posso viver com isso.MAS em versões recentes, eu tenho espaço "vazio" que ele exibe quando euvoltar para a primeira atividade. E está aqui durante menos de um segundo, mas suficiente para ver isso!
Para entender melhor o que acontece, veja a imagem abaixo:

1 Segunda atividade: Eu pressiono o botão Up Home - o teclado desaparece corretamente.
2 (voltar para) Primeira atividade: meu ListView é coberto por um espaço "vazio" (cor de fundo no meu aplicativo). E isso desaparece(esta é a mesma altura do SoftKeyboard, sem dúvida!)

Eu acho que é porqueForcei o teclado a aparecer na minha primeira atividadeembora eu também forcei o teclado a se esconder quando vou no segundo, mas como posso resolver o espaço "vazio" quando volto à primeira atividade?

Resumo
1) Uma atividade => pressione o item no menu> visualizar recolher> ​​mostrar o teclado> tocar texto> enviar> ocultar teclado> iniciar atividade B.
2) Atividade B => setCustomView in actionbar> mostre o teclado somente se o texto da edição estiver focado / clicado> toque em texto> envie> ocultar teclado> atualizar conteúdo> pressione o botão home> retornar à atividade A
3) Uma atividade => tela "vazia"> tela desaparece.

Qualquer ajuda será muito apreciada.
Obrigado pelo seu tempo.

EDITAR
Eu adiciono meu código da minha primeira aula, para ver se alguém me diz o que estou fazendo de errado. Talvez seja o meu código que faz o problema.

Menu (ActionView)

ActionBar actionBar;
MenuItem itemSearchAction;
EditText mSearchEdit;
InputMethodManager mImm;

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
    getSupportMenuInflater().inflate(R.menu.main, menu);

    itemSearchAction = menu.findItem(R.id.action_search);
    View v = (View) itemSearchAction.getActionView();
    mSearchEdit = (EditText) v.findViewById(R.id.SearchEdit);
    itemSearchAction.setOnActionExpandListener(this);

    return true;
}  

OnActionExpandListener

@Override
public boolean onMenuItemActionExpand(MenuItem item) {
    actionBar.setIcon(R.drawable.ic_app_search); // change icon
    mSearchEdit.requestFocus(); // set focus on edittext
    openKeyboard(); // the method above
    mSearchEdit.setOnEditorActionListener(new OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                closeKeyboard(); // same method as above
                // new Intent() to second activity 
                // perform with startActivity();
                itemSearchAction.collapseActionView(); // collapse view
                return true;
            }
            return false;
        }
    });
    // add a clicklistener to re-open the keyboard on lower versions
    mSearchEdit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openKeyboard();
        }  
    });
    return true;
}

@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
    actionBar.setIcon(R.drawable.ic_app_logo); // change icon again
    if(!(mSearchEdit.getText().toString().equals("")))
                            mSearchEdit.setText(""); // reinitial the edittext
    return true;
}  

OnOptionsItemSelected

// I had this verification when I make new Intent() to  
// a new activity, just in case (works like a charm)  
if(itemSearchAction.isActionViewExpanded())
         itemSearchAction.collapseActionView();  

ActionView (Item + layout)

<item
     android:id="@+id/action_search"
     android:icon="@drawable/ic_app_search"
     android:title="@string/action_search"
     android:showAsAction="ifRoom|collapseActionView"
     android:actionLayout="@layout/search_actionview" />  

<EditText
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/SearchEdit"
     android:layout_width="fill_parent" android:layout_height="wrap_content"
     android:layout_gravity="right|bottom" android:gravity="left"
     android:layout_marginBottom="6dip"
     android:hint="@string/action_search"
     android:textColor="@color/white"
     android:textColorHint="@color/white"
     android:singleLine="true"
     android:cursorVisible="true"
     android:inputType="text"
     android:imeOptions="actionSearch|flagNoExtractUi"
     android:imeActionLabel="@string/action_search"
     android:focusable="true" android:focusableInTouchMode="true"
     android:background="@drawable/bt_edit_searchview_focused" >

     <requestFocus />
</EditText>

ATUALIZAR

Eu vejo muitos problemas semelhantes, comEditText emActionBar o que não faz o teclado aparecer, mesmo que o foco tenha sido definido. Eu tentei isso novamente (mesmo que eu já tenha testado várias vezes):

/*
* NOT WORKING 
* Sources: https://stackoverflow.com/questions/11011091/how-can-i-focus-on-a-collapsible-action-view-edittext-item-in-the-action-bar-wh  
* https://stackoverflow.com/a/12903527/2668136
*/
int mode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
getWindow().setSoftInputMode(mode);  

postDelayed() to show: .showSoftInput(mSearchEdit, InputMethodManager.SHOW_IMPLICIT); - 200ms (Not working on lower versions)
postDelayed() to hide: .hideSoftInputFromWindow(mSearchEdit.getWindowToken(), 0); - 200ms  

new Runnable() on edittext => requestFocus() + showSoftInput(SHOW_IMPLICIT/FORCED/HIDE_NOT_ALWAYS/HIDE_IMPLICIT_ONLY)

Parece comigo, sóSHOW_FORCED|HIDE_IMPLICIT_ONLY pode forçar o teclado a ser exibido automaticamente quando a visualização for recolhida. Depois disso, em todas as versões, devo fazer umahideSoftInputFromWindow a 0 para escondê-lo.
MAS isso não exibe o teclado mesmo se o texto da edição for pressionado, então eu adicionei umClickListener para forçar o teclado a mostrar novamente (isso acontece apenas em versões inferiores).

UPDATE2:
É claramente estranho, quando eu tento fazer um poucoThread como eu vi em muitas respostas SO (com / sem ABS), nada acontece em versões inferiores.
Eu tentei de um jeito diferente. Eu criei o novo segmento para ter um curto período de tempo antes de chamar a nova intenção para esconder o teclado. Eu tive o teclado que forçou a fechar, ok. E então eu abri a nova atividade, ok. Mas agora quando eu voltar, vale a pena! O espaço "vazio" também está nas versões inferiores quando eu volto. Eu fiz isso:

// close the keyboard before intent
closeKeyboard();
// make the intent after 500 ms
Handler handler = new Handler();
Runnable runner = new Runnable() {
    public void run() {
        // new intent with startActivity()
    }
};
handler.postDelayed(runner, 500); 
// collapse the View  
itemSearchAction.collapseActionView();  

Isso me dá dores de cabeça! Eu não entendo porque no meu caso, a dica acima não funciona enquanto em outras respostas, quando eles usam um novo thread para mostrar / ocultar o teclado, isso funciona perfeitamente.

NOTA: meus testes estavam em(emulador :) GalaxyNexus, NexusS, NexusOne e(dispositivos reais :) Samsung GalaxySL (2.3.6) e Nexus4 (4.4).

Se alguém puder me ajudar com essa situação feia. Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion