5

我有一个在 TabHost 中运行的 Activity(扩展 Activity)。我从用户操作启动 Android 电子邮件客户端。如果我点击电子邮件客户端中的“放弃”按钮,电子邮件客户端会退出,但屏幕键盘仍然可见。

我的应用程序上没有 EditTexts,所以不知道为什么键盘会一直亮着。我已经尝试了几次迭代如何在完成一项活动后移除键盘?但是没有运气。有什么想法吗?

代码示例

package com.test.launchmail;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;

public class myEmail extends Activity
{
    private final String TAG = "** Email **";


    public static void send (Context ctx, String addy, String subject, String body)
    {
        // check to make sure the entry has a phone number
        try
        {
            // use the builtin chooser for users mail app
            Intent sendIntent = new Intent(Intent.ACTION_SEND);
            sendIntent.setType("text/plain");

            sendIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String [] {addy});
            sendIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
            sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);
            ctx.startActivity (Intent.createChooser(sendIntent, "Send via which Application?"));

        }
        catch (Exception e) 
        {
            Toast.makeText (ctx, "No activity was found to handle this action",Toast.LENGTH_SHORT).show();
        }
    }


    @Override
    protected void onPostResume()
    {
       // This executes, but keyboard still visible. 
        Log.d ("myEmail", "hiding");
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow (mainApp.tabHost.getCurrentTabView ().getApplicationWindowToken (),imm.HIDE_IMPLICIT_ONLY);

       super.onResume ();
    }
}
4

3 回答 3

2

好悲伤多么令人恼火。我搜索了一整天,终于找到了隐藏在 29 种不同方法下的答案。每个人都声称通过不同的 InputMethodManager 变体取得了成功。对于它的价值,这个对我有用 Close/hide the Android Soft Keyboard

它希望有一天有一个标准的 API 调用来做到这一点。

于 2012-11-23T19:32:27.857 回答
0

尝试将您的清单文件放入所需的活动(您没有显示键盘的活动)中:windowSoftInputMode="stateHidden"

于 2012-11-23T18:27:59.600 回答
0

我的解决方案是在导航到电子邮件活动之前执行以下操作:

  1. 确保键盘隐藏在我的应用程序屏幕上(使用流行的 stackoverflow 方法)
  2. 最重要的是,确保屏幕上的 EditText 不再具有焦点。 contactSearchView.clearFocus()
于 2019-06-27T12:15:28.707 回答