Android调用输入法软键盘,返回输入的内容

2024-06-17 11:08

本文主要是介绍Android调用输入法软键盘,返回输入的内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android调用输入法软键盘,返回输入的内容       

        分类:            Android 32人阅读 评论(0) 收藏 举报
Android NDK Android调出软键盘 InputMethodManager

我们一直在讲,C++写游戏代码,然后通过NDK编译,然后展现在Android层。


在游戏中的各种输入框,点击就会出现Android的软键盘。这其实是C++调用了Android层,然后在Android层获得软键盘的输入内容,然后把内容返回到C++层。


我们这里讲的是Android层调出软键盘然后获取到用户输入显示在TextView上面,至于怎么将Android层获取到的内容返回到C++层,请看

C++调用Android 与Android调用C++ 例子

好了,下面是Android调用输入法软键盘获取用户输入的例子。



工程名:Cocos2dInput

包名:com.example.cocos2dinput


我们工程里面有两个Activity,一个是主界面,另外一个界面上有一个输入框加上一个完成按钮,点击完成按钮就把获取到的软键盘输入传递到主界面Activity


MainActivity:

[cpp] view plain copy print ?
  1. package com.example.cocos2dinput; 
  2.  
  3. import android.hardware.input.InputManager; 
  4. import android.os.Bundle; 
  5. import android.R.integer; 
  6. import android.app.Activity; 
  7. import android.app.AlertDialog; 
  8. import android.app.AlertDialog.Builder; 
  9. import android.content.Context; 
  10. import android.content.DialogInterface; 
  11. import android.content.Intent; 
  12. import android.util.Log; 
  13. import android.view.Menu; 
  14. import android.view.View; 
  15. import android.view.View.OnClickListener; 
  16. import android.view.inputmethod.InputMethodManager; 
  17. import android.widget.Button; 
  18. import android.widget.TextView; 
  19.  
  20. public class MainActivity extends Activity { 
  21.      
  22.     TextView ContentTextView; 
  23.     Button button; 
  24.     Button buttonCallC; 
  25.     String contentString; 
  26.     public static Context mContext; 
  27.  
  28.     @Override 
  29.     protected void onCreate(Bundle savedInstanceState) { 
  30.         super.onCreate(savedInstanceState); 
  31.         setContentView(R.layout.activity_main); 
  32.          
  33.          
  34.         contentString=getStringFromC(); 
  35.         ContentTextView=(TextView)findViewById(R.id.text1); 
  36.         ContentTextView.setText(contentString); 
  37.         button=(Button)findViewById(R.id.button1); 
  38.         buttonCallC=(Button)findViewById(R.id.button2); 
  39.          
  40.         mContext=this.getApplicationContext(); 
  41.          
  42.         button.setOnClickListener(new OnClickListener() { 
  43.              
  44.             @Override 
  45.             public void onClick(View arg0) { 
  46.                 // TODO Auto-generated method stub 
  47.                 //InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
  48.                 //inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 
  49.                  
  50.                 Intent intent=new Intent(); 
  51.                 intent.setClassName(getApplication(),"com.example.cocos2dinput.InputActivity"); 
  52.                 startActivityForResult(intent, 0); 
  53.             } 
  54.         }); 
  55.          
  56.     } 
  57.      
  58.      
  59.      
  60.     @Override 
  61.     protected void onActivityResult(int requestCode,int resultCode,Intent intent) 
  62.     { 
  63.         switch (resultCode) { 
  64.         case RESULT_OK: 
  65.             Bundle bundle=intent.getBundleExtra("resultBundle"); 
  66.             contentString=bundle.getString("contentString"); 
  67.             ContentTextView.setText(contentString); 
  68.             break
  69.  
  70.         default
  71.             break
  72.         } 
  73.     } 
  74.  
  75.     @Override 
  76.     public boolean onCreateOptionsMenu(Menu menu) { 
  77.         // Inflate the menu; this adds items to the action bar if it is present. 
  78.         getMenuInflater().inflate(R.menu.main, menu); 
  79.         return true
  80.     } 
  81.      
  82.     static
  83.         System.loadLibrary("cocos2dinput"); 
  84.     } 
  85.  
package com.example.cocos2dinput;import android.hardware.input.InputManager;
import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends Activity {TextView ContentTextView;Button button;Button buttonCallC;String contentString;public static Context mContext;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);contentString=getStringFromC();ContentTextView=(TextView)findViewById(R.id.text1);ContentTextView.setText(contentString);button=(Button)findViewById(R.id.button1);buttonCallC=(Button)findViewById(R.id.button2);mContext=this.getApplicationContext();button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);//inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);Intent intent=new Intent();intent.setClassName(getApplication(),"com.example.cocos2dinput.InputActivity");startActivityForResult(intent, 0);}});}@Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent intent){switch (resultCode) {case RESULT_OK:Bundle bundle=intent.getBundleExtra("resultBundle");contentString=bundle.getString("contentString");ContentTextView.setText(contentString);break;default:break;}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}static{System.loadLibrary("cocos2dinput");}}


InputActivity:一个输入框和一个完成按钮

[java] view plain copy print ?
  1. package com.example.cocos2dinput; 
  2.  
  3. import android.os.Bundle; 
  4. import android.app.Activity; 
  5. import android.content.Context; 
  6. import android.content.Intent; 
  7. import android.view.Menu; 
  8. import android.view.View; 
  9. import android.view.View.OnClickListener; 
  10. import android.view.View.OnFocusChangeListener; 
  11. import android.view.inputmethod.InputMethodManager; 
  12. import android.widget.Button; 
  13. import android.widget.EditText; 
  14.  
  15. public class InputActivity extends Activity implements OnClickListener { 
  16.  
  17.     public EditText editText; 
  18.     public Button button; 
  19.     public Intent mIntent; 
  20.      
  21.     @Override 
  22.     protected void onCreate(Bundle savedInstanceState) { 
  23.         super.onCreate(savedInstanceState); 
  24.         setContentView(R.layout.activity_input); 
  25.          
  26.         editText=(EditText)findViewById(R.id.editText1); 
  27.         button=(Button)findViewById(R.id.button1); 
  28.          
  29.         mIntent=this.getIntent(); 
  30.          
  31.         button.setOnClickListener(this); 
  32.          
  33.          
  34.     } 
  35.  
  36.     @Override 
  37.     public boolean onCreateOptionsMenu(Menu menu) { 
  38.         // Inflate the menu; this adds items to the action bar if it is present. 
  39.         getMenuInflater().inflate(R.menu.input, menu); 
  40.         return true
  41.     } 
  42.  
  43.     @Override 
  44.     public void onClick(View v) { 
  45.         // TODO Auto-generated method stub 
  46.  
  47.         InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
  48.         //inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 
  49.          
  50.         //隐藏 
  51.         inputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(), 0); 
  52.          
  53.         //传送内容到上一个Activity 
  54.         Bundle resultBundle=new Bundle(); 
  55.         resultBundle.putString("contentString", editText.getText().toString().trim()); 
  56.         mIntent.putExtra("resultBundle", resultBundle); 
  57.         setResult(RESULT_OK,mIntent); 
  58.         this.finish();       
  59.     } 
package com.example.cocos2dinput;import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;public class InputActivity extends Activity implements OnClickListener {public EditText editText;public Button button;public Intent mIntent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_input);editText=(EditText)findViewById(R.id.editText1);button=(Button)findViewById(R.id.button1);mIntent=this.getIntent();button.setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.input, menu);return true;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubInputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);//inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);//隐藏inputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(), 0);//传送内容到上一个ActivityBundle resultBundle=new Bundle();resultBundle.putString("contentString", editText.getText().toString().trim());mIntent.putExtra("resultBundle", resultBundle);setResult(RESULT_OK,mIntent);this.finish();		}
}


1. 点击游戏中的输入框,触发事件

2. 从C++调用Android层的InputActivity,显示出Android层输入框和软键盘。

3. InputActivity中的输入框显示出了输入的内容,点击完成按钮,Android调用C++ 传递输入内容到上一个Activity(即游戏中)

4. 在C++层设置输入框显示。


OK,完工。

这篇关于Android调用输入法软键盘,返回输入的内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069272

相关文章

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

python如何调用java的jar包

《python如何调用java的jar包》这篇文章主要为大家详细介绍了python如何调用java的jar包,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录一、安装包二、使用步骤三、代码演示四、自己写一个jar包五、打包步骤六、方法补充一、安装包pip3 install

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja