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

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C