2017-06-10 15 views
0

2つのEditTextのビューを持つダイアログを作成しようとしています。ここでフォーカスが得られ、自動的にキーボードが開きます。しかし、私はそれを動作させるように見えることはできません。以下は私のコードを示しています。ダイアログが開いたときにキーボードを自動的に開く方法

public class ItemDetailsDialogFragment extends DialogFragment { 
public ItemDetailsDialogFragment() { 
    // Required empty public constructor 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Using the builder class for convenient dialog construction 
    AlertDialog.Builder detailsInput = new AlertDialog.Builder(getActivity()); 

    // Get the layout inflater 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 

    // Inflate and set the layout for the dialog 
    // Pass null as the parent view because its going in the dialog layout 
    detailsInput.setView(inflater.inflate(R.layout.fragment_add_item_details, null)) 
    // Add action buttons 
     .setPositiveButton(R.string.details_ok_button, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       // TODO 
       // Save the details into a map 
      } 
     }) 
     .setNegativeButton(R.string.details_cancel_button, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       ItemDetailsDialogFragment.this.getDialog().cancel(); 
      } 
     }); 
    return detailsInput.create(); 
} 

をそして、ここに私のxmlファイルです:私はこのコード行を追加しようとした場合

<EditText 
    style="@style/details_text" 
    android:id="@+id/details_desc_input" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

<EditText 
    style="@style/details_text" 
    android:id="@+id/details_price_input" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="numberDecimal"/> 

:私はというエラーを取得しdetailsInput.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

getWindow()メソッドを解決できません。

私もこのsuggestionを使って試してみました。しかし、そのダイアログが必要になるたびに、そのコードブロック全体を書き直したくありません。代わりに、私はクラスを作成しようとしているので、クラスを持つオブジェクトを作成することができます。私はアンドロイド開発に新しいので、どんな助けでも大いに感謝されるでしょう!

私は間違っていますか?

答えて

0

あなたはちょうどあなたが2つの方法でそれを行うことができます1のEditTextにフォーカスを持つようにしたい場合:

  • レイアウトファイルで<requestFocus />を追加onCreate方法
  • mEditText.requestFocus();を呼び出します。

あなたが最初のEditText(とキーボード自動的に開く)に焦点を当てたい場合、たとえば、あなたのXMLはそのようにする必要があります:

<EditText 
    style="@style/details_text" 
    android:id="@+id/details_desc_input" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <requestFocus /> <!-- here's the trick --> 
</EditText> 

<EditText 
    style="@style/details_text" 
    android:id="@+id/details_price_input" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="numberDecimal"/> 
関連する問題