2013-03-20 109 views
5

在我的应用程序中有一个EditText。我已经在我的活动EditText上调用了键盘显示。键盘显示&工作正常。onBackPressed方法无法正常工作

现在在当前,我不得不按回退按钮两次,一个用于隐藏键盘&另一个执行一些任务(如数据保存到数据库)。 我不想按两次按钮。

请指导我,或建议

这里有些来自onBackPressed()

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 

    hideKeypad(); 

    //saving EditText data to db. 
} 

代码形式hideKeypad()

private void hideKeypad() { 
     InputMethodManager imm = (InputMethodManager) 
     getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(edittext1.getWindowToken(), 0); 
} 
+0

在用户输入他们正在输入的任何内容后,您是否试图隐藏小键盘? – adneal 2013-03-20 09:50:12

+0

不,但我怎么判断用户完成他的输入@aneal – PSK 2013-03-20 09:51:23

+0

可能相关:http://stackoverflow.com/questions/3558385/android-onbackpressed-not-working – adrianp 2013-03-20 09:53:26

回答

1

使用此方法就类似于你已经这样做,但我很少修改它。注册主布局的侦听器,并将其对象作为参数传递,以便当您单击编辑文本的一侧时,例如,主布局键盘将消失。

/** Close Keypad on touch. 
* @param view on which click happens. */ 

public void closeKeyPad(View view) 
    { 
     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(view.getWindowToken(), 0);  
    } 
+0

我试过..这通过'EditText'方法,仍然不工作@Akhilesh Mani – PSK 2013-03-20 10:04:39

+0

'EditText'是我的应用程序中的全屏幕.. @Akhilesh Mani – PSK 2013-03-20 10:06:13

+0

@PSK好的我认为先生我是对的,你可以在这种情况下使用EditorAction。 – 2013-03-20 10:19:29

0

的问题是,键盘消耗第一BackPressed事件。你无法做任何事情。 解决这个只是听取键盘隐藏事件并完成您的活动。

代码做到这一点:

edit.setOnEditorActionListener(
    new EditText.OnEditorActionListener() { 
@Override 
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
if (actionId == EditorInfo.IME_ACTION_SEARCH || 
     actionId == EditorInfo.IME_ACTION_DONE || 
     event.getAction() == KeyEvent.ACTION_DOWN && 
     event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
    if (!event.isShiftPressed()) { 
     // the user is done typing. finish the activity 
     finish(); 
     return true; // consume. 
    }     
} 
return false; // pass on to other listeners. 
} 
}); 
+0

我已经尝试过使用此代码,但仍未开始工作@ Mr.Me – PSK 2013-03-20 10:28:27

+0

请列出您的所有活动代码,然后 – 2013-03-20 10:33:22

0

按back关闭键盘是用户界面的标准功能。你为什么要改变这个?

习惯于在Android设备上使用软键盘的用户将被用于按下一次关闭键盘,然后再一次在应用程序中移回。

如果您在显示键盘时使后退按钮在应用程序中回退,它会使导航与标准Android导航不同,并且许多用户可能会对此感到沮丧。

除此之外,您onBackPressed因为显示键盘时,该onBackPressed键盘运行不会被调用 - 这,因为我们都看到 - 就是隐藏键盘 - 而不是onBackPressed为您的应用程序。

Mr.Me的答案是如果你想要这样做的话,但我不会推荐它。