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

相关文章

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导