6

スクリーン キーボードに問題があります。キーボードを表示するアクティビティとEditText、2 番目のアクティビティに移動するボタンがあります。2 番目のアクティビティは、ProgressDialogに を表示しonCreate()、何かを実行し、 を閉じProgressDialogます。問題は、ProgressDialogが表示されている間、キーボードも表示されることです。

を作成する前にキーボードを非表示にしたいと思いProgressDialogます。StackOverflow と他のサイトの両方を徹底的に検索しましたが、この特定のシナリオでは何も機能しないようです。

参考までに2枚の写真を添付し​​ます。

これは最初のアクティビティのコードです:

public class FirstActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
    }
}

これは 2 番目のアクティビティのコードです。

public class SecondActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);

        // TODO: hide keyboard here

        final ProgressDialog dialog = ProgressDialog.show(this, "", "Please wait...", true, false, null);

        // in real code, here there is an AsyncTask doing stuff...
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                dialog.dismiss();
            }
        }, 5000);
    }
}

ありがとう

4

5 に答える 5

20

phalt によって投稿された手法のバリエーションを使用して解決されました。

InputMethodManager im = (InputMethodManager) this.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

ウィンドウ トークンを取得するためにフォーカスされたビューに依存しないため、このコードはonCreate/ onStart/の間正しく機能します。onResume

于 2012-05-03T12:05:36.553 に答える
10

このコードを「SecondActivity」アクティビティの manifest.xml ファイルに記述します。

<activity name="EditContactActivity"
    android:windowSoftInputMode="stateAlwaysHidden">
    ...
</activity>
于 2012-05-03T10:06:22.087 に答える
1

このようにも使用できます:

InputMethodManager imm;

onCreate() メソッドの以下の行に書き込みます。

imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

そして、この行はボタンの onclick にあります:

imm.hideSoftInputFromWindow(arg0.getWindowToken(), 0);

例:

public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {

            imm.hideSoftInputFromWindow(arg0.getWindowToken(), 0);
            Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });
}
}
于 2012-05-03T10:09:59.743 に答える
-1

やってみました:

InputMethodManager im = (InputMethodManager)
this.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);

im.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),
InputManagerMethod.HIDE_NOT_ALWAYS);

これは、キーボードを非表示にするポイントでスローするコードです。

于 2012-05-03T10:34:03.803 に答える