【问题标题】:start activity when softinput is gone当软输入消失时开始活动
【发布时间】:2012-10-16 20:04:26
【问题描述】:

我有这段代码,我有一个按钮,这会显示一个编辑文本并强制软输入出现,当用户结束输入文本时我想做一些事情我该怎么做?

public class MainActivity extends Activity implements OnClickListener {
    private EditText textInput;
    private Button btnAdd;
    private TextView text;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textInput = (EditText)this.findViewById(R.id.editText1);
        btnAdd = (Button)this.findViewById(R.id.button1);
        text = (TextView)this.findViewById(R.id.textView1);
        btnAdd.setOnClickListener(this);


    }


    public void onClick(View arg0) {
        int id = arg0.getId();
        switch(id){
        case R.id.button1:
            processOnClick();
            break;
        }


    } 

 private void processOnClick() {
        text.setVisibility(2);
        textInput.setVisibility(0);
        textInput.setInputType(0x00000001);
        textInput.getWindowVisibility();
        textInput.setCursorVisible(false);
        //textInput.onKeyDown(0x00000009,KeyEvent.KEYCODE_2);
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(textInput.findFocus(), 0);



    }

谢谢大家

【问题讨论】:

    标签: android android-activity keyboard


    【解决方案1】:

    您可以使用此链接:How to know if keyboard (dis)appears in Android?

     @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
    
            // Checks whether a hardware or on-screen keyboard is available
            if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {
                Toast.makeText(this, "Keyboard visible", Toast.LENGTH_SHORT).show();
            } else if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_YES) {
                Toast.makeText(this, "Keyboard hidden", Toast.LENGTH_SHORT).show();
            }
        }
    

    【讨论】:

    • 您是否阅读过此 cmets:您可能希望将 newConfig.hardKeyboardHidden 更改为 newConfig.keyboardHidden,它也可以处理屏幕键盘。 – RivieraKid 2011 年 5 月 11 日 10:03 没关系 - 为你做了 ;-) – RivieraKid 2011 年 5 月 11 日 10:21 我试过了,但从未调用 onConfigurationChanged 方法...在 AndroidManifest.xml我有 android:configChanges="keyboardHidden|keyboard" – PitjDroid 2011 年 5 月 11 日 10:26 configChanges 属性是否与清单上的正确活动相关联? – Jota 2011 年 5 月 11 日 11:00
    【解决方案2】:

    这完全取决于您如何确定“用户结束输入文本”。

    如果您可以认为用户在输入(比如说)后等待程序响应 3 秒,您可以执行以下操作:

    1. TextWatcher 添加到EditText。每次文本更改时,都会通过回调通知您。
    2. 每次输入后,启动Thread,它会休眠预定时间(3 秒)。如果休眠完成,则启动Activity。如果用户在睡眠完成之前输入文本,则中断线程并重新开始。

    更直接的实现是提供一个按钮,上面写着“开始”或“开始”之类的内容,这样用户就不会感到意外,并且您不会做任何无意的事情。

    【讨论】:

    • 最后我会放上按钮,但我想避免它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    相关资源
    最近更新 更多