请教各位大侠,我想基于一个普通的View(即不是Textview也不是EditText)实现类似于EditText的东西:
1. 点击出现软键盘。
2. 从键盘输入,然后选词,然后得到所选的中文。现在的问题是,我怎样才能得到所选(输入)的中文呢?public MyView(Context context) {
    super(context);
    mImm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
    mRR = new ResultReceiver(new Handler() {
    @Override
    public void handleMessage(Message msg) {
 Log.d(TAG, msg.toString());
}
   });
   ....
}
public boolean onTouchEvent(MotionEvent event) {
    mImm.showSoftInput(this, 0, mRR);
    ........
}是从ResultReceiver参数,还是从哪儿得到输入的结果呢?

解决方案 »

  1.   

    呼出软键盘,应当也有相关的INPUT输入处理事件吧?
    那里没有办法处理么?
      

  2.   

    谢谢你们的回复。抱歉我没有表述清楚。 
    其实我在做的是一个类似于浏览器的东西,将网页上的所有东西都用原始图形画在Android的一个View上。例如,当打开百度时,我就需要画一个搜索框。当用户点击这个搜索框时,弹出Android自己的输入法,当用户输入完毕,那么我需要将用户输入的文字(比如中文)传递给搜索框。现在我的问题就是如何能拿到用户的输入。答案应该就在InputMethod这一块,不过现在比较头大,很长时间没碰Android了,所以一时找不到。
      

  3.   


    public void onClick(View v) {
    EditText edit_text = (EditText) findViewById(R.id.edit_text);
    CharSequence edit_text_value = edit_text.getText();
    setTitle("EditText的值:"+edit_text_value);
    }
      

  4.   

    To zhq56030207:谢谢。不过我并没有用EditText。
    我的程序是用C++写的,现在将它移植到Android中来。
    上面举例中的搜索框是我已经用c++实现好的,只是将它画在Android中。所以,从Android的角度来讲,其实就是画在View背景上的一个矩形而已。
    我需要往这个矩形(我自己实现的编辑框)里输入中文。第一步调用软键盘(输入法),这很容易。但是我不知道下一步该怎么得到输入结果。从而传递给我自己的编辑框。
      

  5.   

    InputMethodService是通过InputConnection向Editable的Text控件提交输入的。
    所以你也许需要继承实现BaseInputConnection,并用View.onCreateInputConnection创建出来。这样输入法commitText就会传递给你的编辑框但我觉得你这样做可能还是很麻烦,最好你的编辑框还是继承自EditText就是说整个页面都只有一个编辑框,用户点到哪里就出现在哪里,不知可行?
      

  6.   

    To oyq_yangy:非常感谢。
    我按照你的意见如下实现:
    1. 参照EditableInputConnection,作了一个BaseInputConnection继承类。 
    2. 给我自己的View继承类里添加了onCreateInputConnection方法。
    3. 最后成功的在commitText在截取到了我要的字符串,虽然现在还有点小问题,不过这部分的目的已基本达到。另外你的第二个建议也给了我很多启发,但是这样做的有可能会使原程序的可移植性受到影响或者需要在C++和android之前传送很多数据用来协调。再次谢谢指导。
    只是很惭愧啊,分不多,呵呵。
      

  7.   

    不过,我不知道为什么。当输入日文的时候,commitText不被调用。所以无法获取日文输入。
      

  8.   

    估计我可能帮不了你太多了,呵呵,我也是新学android,只不过是尽自己知道的东西来说
      

  9.   

    日文是用什么输入的?也是输入法么?输入法各自的发送方式不一样,不一定都会用commit方式发送到编辑框上的
      

  10.   


    是的,是Android自带的日文输入。
      

  11.   

    LZ,我还是建议你UI的部分按照andoird自带的系统控件来做,1是处理方便,2是改动比较小。
    我觉得通用的东西还是做方法类的,最好不要涉及到UI层,因为现在出的系统都是在UI上很灵活的,为了吸引用户,所以区别和限制都很多,但优点都是灵活和使用方便,所以如果说是一些数据分析和处理的功能,那做成通用的,与平台无关,这样比较好。然后UI,还是遵循平台本身来处理吧。
      

  12.   


    非常感谢。但其实我在这里面提到的编辑框严格意义上来讲并不完全属于UI范畴。
    比如对一个浏览器,它网页(绘制/显示)部分显然不属于UI。如果这部分与平台关联太多,
    那么它的可移植性将是非常差的。
      

  13.   

    非常感谢各位的帮助。
    最后发现日文也是可以在commitText里面截获的。
      

  14.   

    To excellentme & letomorrow:不知道二位的需求是否和我一样,如果一样的话,真的不难,按下面的做法肯定是没有问题的。1. 参照EditableInputConnection,作了一个BaseInputConnection继承类。只需要最最基本的几个方法。
    2. 给我自己的View继承类里添加了onCreateInputConnection方法。
    3. 最后成功的在commitText在截取到了我要的字符串,虽然现在还有点小问题,不过这部分的目的已基本达到。如果还有不清楚的,请google一下EditableInputConnection,我记得有一篇Android文档中,有关于输入法的详细介绍。
      

  15.   

    楼主能留个QQ请教一下吗? 我跟你遇到同样的问题. 但是我还没有解决.
    我的QQ37896505
      

  16.   

    楼主是怎么解决的啊,我的在commitText里面只能获取到系统输入法输入的内容,用搜狗输入法,结果搜狗输入法只能弹出一部分,不行。用QQ输入法,结果就获取不到中文。请教一下你是怎么解决的