2010-12-05 23 views
1

マニフェストにandroid:theme="@android:style/Theme.Dialog"を使用するシンプルなアクティビティがあります。ダイアログアクティビティでソフトキーボードを自動的に表示

私のアクティビティは、EditText、2 Buttons、およびTextViewで構成されています。これは、ユーザーが名前を入力してOK/Cancelを押すためのボックスにすぎません。

私はちょうどEditTextにフォーカスし、アクティビティの開始時にソフトキーボードが自動的に表示されるようにします。私はこれについて数え切れないほどの記事を読んだことがありますが、私はそれを動かすことができません。アクティビティが開始されると、点滅カーソルがEditTextに表示されますが、キーボードをクリックするまでキーボードは表示されません。私ものonCreateでこれを試してみた

public class Finalize extends Activity { 

    private EditText mEditName; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.finalize_dialog); 

     mEditName = (EditText) findViewById(R.id.file_name_edit); 
     mEditName.setFocusable(true); 
     mEditName.requestFocus(); 

     mEditName.setOnFocusChangeListener(new View.OnFocusChangeListener() {   
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
      } 
     }); 
    } 
} 

InputMethodManager mgr = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE); 
    mgr.showSoftInput(mEditName, 0); 

編集:動作するはずです以下参照

<activity class=".Finalize" 
     android:name=".Finalize" 
     android:label="@string/file_name_title" 
     android:theme="@android:style/Theme.Dialog" 
     android:screenOrientation="portrait"   
     android:windowSoftInputMode="stateAlwaysVisible"> 
    </activity> 

答えて

2

のための私のマニフェスト

は、ここに私の活動です。マニフェストに移動し、アクティビティ行をandroid:windowSoftInputMode属性で更新します。

<activity android:name=".Finalize" 
    android:windowSoftInputMode="stateAlwaysVisible"> 
    ... 
</activity> 

この属性に渡すことができるさまざまなパラメータの詳細については、以下のdocumentationページを参照してください。

私は上記をテストし、それは私のために正常に動作します。ここに私のひどく簡単な例があります。 コード:

public class DialogActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   
    } 
} 

レイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 
    <EditText android:id="@+id/edit_text_test" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

マニフェスト:

<activity android:name=".DialogActivity" 
       android:windowSoftInputMode="stateAlwaysVisible" 
       android:label="@string/app_name" 
       android:theme="@android:style/Theme.Dialog"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
+0

をこの作業を試してみてください。 – user432209

+0

ダイアログをスローするのではなく、アクティビティをテーマとしてダイアログを使用する特別な理由はありますか? – Thomas

+0

@ user432209テストデバイスに物理キーボードがありますか? – Thomas

1

機能しなかったこと、残念ながら私のため

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
関連する問題