diff --git a/res/layout/dialog_edittext.xml b/res/layout/dialog_edittext.xml
index 6b849ac..80911da 100644
--- a/res/layout/dialog_edittext.xml
+++ b/res/layout/dialog_edittext.xml
@@ -25,6 +25,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:maxLength="50"
+        android:singleLine="true"
     />
         
 </LinearLayout>
diff --git a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
index 4996858..b80e42a 100644
--- a/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothNameDialogFragment.java
@@ -30,10 +30,14 @@
 import android.text.InputFilter;
 import android.text.TextWatcher;
 import android.util.Log;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.WindowManager;
+import android.view.inputmethod.EditorInfo;
 import android.widget.Button;
 import android.widget.EditText;
+import android.widget.TextView;
 
 import com.android.settings.R;
 
@@ -94,19 +98,23 @@
                 .setPositiveButton(R.string.bluetooth_rename_button,
                         new DialogInterface.OnClickListener() {
                             public void onClick(DialogInterface dialog, int which) {
-                                if (mLocalAdapter != null) {
-                                    String deviceName = mDeviceNameView.getText().toString();
-                                    Log.d(TAG, "Setting device name to " + deviceName);
-                                    mLocalAdapter.setName(deviceName);
-                                }
+                                String deviceName = mDeviceNameView.getText().toString();
+                                setDeviceName(deviceName);
                             }
                         })
                 .setNegativeButton(android.R.string.cancel, null)
                 .create();
+        mAlertDialog.getWindow().setSoftInputMode(
+                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
 
         return mAlertDialog;
     }
 
+    private void setDeviceName(String deviceName) {
+        Log.d(TAG, "Setting device name to " + deviceName);
+        mLocalAdapter.setName(deviceName);
+    }
+
     @Override
     public void onSaveInstanceState(Bundle outState) {
         outState.putString(KEY_NAME, mDeviceNameView.getText().toString());
@@ -123,6 +131,18 @@
         });
         mDeviceNameView.setText(deviceName);    // set initial value before adding listener
         mDeviceNameView.addTextChangedListener(this);
+        mDeviceNameView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_DONE) {
+                    setDeviceName(v.getText().toString());
+                    mAlertDialog.dismiss();
+                    return true;    // action handled
+                } else {
+                    return false;   // not handled
+                }
+            }
+        });
         return view;
     }
 
