2013-08-28 5 views
0

У меня есть первая активность A, где пользователь устанавливает логин и пароль. Затем он нажимает «ОК», поэтому клавиатура открыта, и он прибывает в действие B. В onCreate активности B я показываю DialogFrament, но клавиатура все еще открывается, пока я не скрою DialogFragment.Скрыть клавиатуру перед отображением DialogFragment

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    GeolocalisationDialog geoDlg = new GeolocalisationDialog(); 
    geoDlg.show(getSupportFragmentManager(), "geoDlg"); 
} 

Мой вопрос: как скрыть клавиатуру, прежде чем показывать DialogFragment?

пс: Мой DialogFrament является основным DialogFragment

public class GeolocalisationDialog extends DialogFragment { 

private static DialogClickListener callback; 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    try { 
     callback = (DialogClickListener) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(activity.toString() + " must implement DialogClickListener"); 
    } 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setMessage(R.string.authorize_geoloc) 
      .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
        callback.onYesClick(); 
       } 
      }) 
      .setNegativeButton(R.string.refuse, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
        callback.onNoClick(); 
       } 
      }); 

    return builder.create(); 
} 

} 

ps2: Я никогда не пытался установить андроид: windowSoftInputMode = "stateHidden" в манифесте, и он не работает

ответ

0

Используйте следующие чтобы скрыть экранную клавиатуру силой:

InputMethodManager imm = (InputMethodManager)getSystemService(
     Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0); 
// here you may choose the editText where the last time keyboard was opened. 

См How to make the virtual keyboard go away? больше.

+0

В действии A или B? Я точно, если я не показываю DialogFragment, клавиатура автоматически скрывается при запуске новой активности. – mrroboaat

+0

Вы можете сделать это внутри кнопки «ОК» onClick, если это создает проблему. Я предполагаю, что его после того, как пользователь завершит ввод пароля. Так сделайте это в первой деятельности. 'yourEditText' может быть полем EditText вашего пароля. –

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