我正在使用android默认共享功能将文本共享给其他应用程序
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, sharingString);
shareIntent.setType("text/plain");
startActivity(shareIntent);
问题:
当我共享到另一个应用程序(即WhatsApp,Slack等)时,在该应用程序中打开键盘(即编辑消息等),然后发送或返回到我的应用程序。在某些情况下,键盘在该应用中保持打开状态,当我尝试使用以下代码在简历上关闭键盘时,该键盘将无法正常工作。
public static void hideKeyBoard(Activity activity, View view) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
if (view == null) {
view = new View(activity);
}
if (imm != null) {
if(view.getWindowToken()!=null)
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
if(view.getApplicationWindowToken()!=null)
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
}
view.clearFocus();
}
并从片段的onResume()
调用函数
if(getActivity()!=null){
Utils.hideKeyBoard(getActivity(),getActivity().getCurrentFocus());
}
我找到了许多与隐藏键盘有关的答案,但是在这种情况下,任何答案均无效。
注意:在通常情况下,当我使用hideKeyBoard()
方法时,它运行良好。只是这种情况不起作用。谁能帮我吗?
修改 正如我上面提到的。在上面的注释中解释了为什么这个问题不像先前回答的那样。因此,请让Plesase阅读。而且我还尝试了this链接。但不起作用。
答案 0 :(得分:0)
您可以尝试使用以下可能对您有帮助的代码。
public static void hideKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
//Find the currently focused view, so we can grab the correct window token from it.
View view = activity.getCurrentFocus();
//If no view currently has focus, create a new one, just so we can grab a window token from it
if (view == null) {
view = new View(activity);
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
这是一些奖励
创建活动实例,而不要在片段上使用getActivity()
方法。当片段不可见时,getActivity()
返回null
关于片段主机活动
public static MainActivity mainActivity;
public static MainActivity getInstance() {
return mainActivity;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainActivity = this;
}
在onResume()
通话hideKeyboard(MainActivity.getInstance())
内
此外,请不要忘记在您的android:windowSoftInputMode="stateAlwaysHidden"
中添加Manifest