2011-09-13 17 views
3

私はC++のJavaコールバックを使用して、ユーザーが画面に触れるとソフトキーボードを強制的に開くゲームを持っています。 Javaコードは、単にこれです:これはしばらくの間、うまく働いたが、最近、我々はソフトキーボードが彼らのために開かないことをいくつかのモトローラドロイドのユーザーからの苦情を受けてきたAndroidソフトキーボードをネイティブコードから開く方法

this._inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

。私たちは最近、これらの苦情を受け始めたばかりであり、ユーザーの数が増えていると思っています。

キーボードを強制的に開くより良い方法はありますか?私がテキストボックスコントロールなどを使ってオンラインで話すすべてのリンクは、私のアプリは主にC++であり、標準のコントロールを全く使用していません。

答えて

5

これはあなたの問題に関連しているのかどうかはわかりませんが、デバイスが時々「同期がとれない」ときに表示されてしまったときにInputMethodManager.toggleSoftInput()その逆。

は、私は事実を利用することによって、いくつかの成功を持っていたことIMM.showSoftInputは()は、キーボード、IMM.hideSoftInputFromWindow()意志確実に近いものを、表示されませんしながら、私が表示したいときキーボードIMM.hideSoftInputFromWindow()の後にIMM.toggleSoftInput()を呼び出し、IMM.hideSoftInputFromWindow()を単独で使用してキーボードを隠すようにしました。上記昨日は私が、私は(私は、showSoftinputを(平均)仕事、我々はそれを期待だけではないやり方をしてソフトキーボードを扱ったかを再考製ライティング

[後日...]

それでは、これを行うより良い方法です:

まず、Androidがソフトキーボードを持つことができるように設定する必要があります。これは、InputMethodManagerのドキュメントに記述されています。私の場合はGLSurfaceViewに由来する単一のビューを持っているので、私は、コメントを追加しました:

setFocusable(true); 
setFocusableInTouchMode(true); 

コンストラクタにして、次の2つのオーバーライド:

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) 
{ 
    outAttrs.actionLabel = ""; 
    outAttrs.hintText = ""; 
    outAttrs.initialCapsMode = 0; 
    outAttrs.initialSelEnd = outAttrs.initialSelStart = -1; 
    outAttrs.label = ""; 
    outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI;   
    outAttrs.inputType = InputType.TYPE_NULL;   

    return new BaseInputConnection(this, false);  
}  

@Override 
public boolean onCheckIsTextEditor() 
{ 
    return true; 
} 

を今私は、キーボードを表示することができます。

InputMethodManager mgr = (InputMethodManager)mActivity.getSystemService(Context.INPUT_METHOD_SERVICE); 
mgr.showSoftInput(mView, 0); 

キーの押下は、ビューのonKeyUp()およびonKeyDown()メソッドを介して報告されます。

hideSoftInputFromWindow()を使用して非表示にしています。

+0

これは私が耳にした最善の提案です。残念ながら、実際に問題が発生しているデバイスではこれをテストすることはできません。なぜなら、これを試してみるつもりはないからです。それがうまくいくなら、私はこれを答えとしてマークします。ありがとう! –

+0

これといくつかのバリエーションを試しましたが、問題はDroid Bionicにまだ表示されています。私が行ったことは、そのデバイス上のソフトキーボードを正常に開くことができなかったようです。 –

+0

あなたはBionicにアクセスできますか?私はキーボードが "PocketSat3 Demo"(マーケットから無料)のためにそれに取り組んでいれば本当に好奇心が強いだろう。アプリはキーボード互換性テストで起動します。 – jimkberry

関連する問題