实现安卓按键响应的四种方式

1.设置onClick属性

  • 在.xml文件中使用onClick可以指定一个响应函数,这个函数在java中实现,按键被点击后会去调用这个函数

  • 设置.xml中的onClick属性,指定一个函数

    <Button
    	android:onClick="buttonBeClieked"/>
    
  • 在Java里实现该方法

    public void buttonBeClieked(View v){ //View在android.view.View
            switch (v.getId()){
                case R.id.Bu_1: //按键id在R文件中
                    Toast.makeText(this,"按键1被按下",Toast.LENGTH_SHORT).show();break;
                case R.id.Bu_2:
                    Toast.makeText(this,"按键2被按下",Toast.LENGTH_SHORT).show();break;
            }
    }
    

❤️ ❤️ ❤️ ❤️ ❤️

  • 下面的三种方法都是基于按键监听器OnClickListener实现的,该接口在View类下。

❤️ ❤️ ❤️ ❤️ ❤️


2.新建子类实现接口

  • 实现接口类,在类中实现onClick方法

    class MyClieckHandler implements View.OnClickListener{
    
    	public void onClick(View v) {
    		switch(v.getId()){
    			case R.id.Bu_1:
    				System.out.println("按键1被按下");
    				break;
    			case R.id.Bu_2:
    				System.out.println("按键2被按下");
    				break;
    		}
    	}	
    }
    
  • MainActivity中代码

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button bu1 = (Button)findViewById(R.id.Bu_1);	//通过id找按钮
            Button bu2 = (Button)findViewById(R.id.Bu_2);
    
            bu1.setOnClickListener(new MyClieckHandler());   //按钮点击事件监听器
            bu2.setOnClickListener(new MyClieckHandler());
        }
    }
    

3.匿名内部类实现接口

  • 实现OnClickListener中的内部类方法

  • MainActivity:

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button bu1 = (Button)findViewById(R.id.Bu_1);
            Button bu2 = (Button)findViewById(R.id.Bu_2);
    
            bu1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this,"按键1被按下",Toast.LENGTH_SHORT).show();
                }
            });
            
            bu2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this,"按键2被按下",Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    

4.在当前类实现接口

  • MainActivity实现OnClickListener接口

    public class MainActivity extends Activity implements View.OnClickListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button bu1 = (Button)findViewById(R.id.Bu_1);
            Button bu2 = (Button)findViewById(R.id.Bu_2);
    
            bu1.setOnClickListener(this);
            bu2.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch(v.getId()) {
                case R.id.Bu_1:
                    Toast.makeText(this, "按键1被按下", Toast.LENGTH_SHORT).show();break;
                case R.id.Bu_2:
                    Toast.makeText(this, "按键2被按下", Toast.LENGTH_SHORT).show();break;
            }
        }
    }
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个问题属于技术问题,我可以给出回答。sendKeyDownUpSync()方法可以模拟发送按键,如果出现无响应可能是权限问题或者设备不支持此方法。可以尝试在应用程序的Manifest文件中添加相应的权限,或者考虑其他方式实现相同的功能。 ### 回答2: sendKeyDownUpSync()方法是Android中的一个方法,用于模拟发送按键事件。但如果按键响应,则可能是由于以下几个原因: 1. 设备硬件问题:如果按键响应,可能是由于设备本身的硬件问题。例如,按键损坏或者与系统的连接出现故障等。这种情况下,无法通过软件模拟发送按键来解决问题,需要修复或更换硬件设备。 2. 系统设置问题:如果按键响应,可以检查一下系统设置。可能是某些设置或权限禁止了对按键事件的响应。可以进入系统设置,查看是否有关于按键设置的选项或权限,进行相应的调整。 3. 软件冲突问题:有时候在某些应用程序中模拟按键事件可能会出现冲突问题,导致按键响应。可以尝试关闭其他正在运行的应用程序,然后再次尝试发送按键事件。 4. 键盘设置问题:如果使用的是外部键盘,可能需要检查键盘设置。有时候按键响应可能是由于键盘设置不正确导致的。可以进入键盘设置,检查键盘设置是否正确,可以尝试重新设置或选择其他设置。 总之,如果使用sendKeyDownUpSync()方法模拟发送按键响应,需要先确定是硬件问题还是软件问题,然后根据具体情况采取相应的解决措施。 ### 回答3: sendKeyDownUpSync()方法是Android系统中的一个方法,用于模拟发送按键事件。但是,如果该方法无响应,可能有以下几个可能原因: 1. 错误的按键代码:sendKeyDownUpSync()方法需要传入有效的按键代码,如果传入的代码无效或者不存在对应的按键事件处理程序,就会导致无响应。 2. 程序逻辑错误:在调用sendKeyDownUpSync()方法之前,可能存在一些错误的逻辑代码导致该方法无法执行或者没有被调用到。 3. 线程阻塞:如果在调用sendKeyDownUpSync()方法时,当前线程被阻塞或者处于无限循环状态,就会导致该方法无法被正常执行。 4. 系统限制:有些特定的按键事件可能受到系统的限制,例如Home键、返回键等,系统为了避免恶意行为,可能会限制对这些按键事件的模拟。 针对以上可能的原因,可以通过以下方法来解决sendKeyDownUpSync()方法无响应的问题: 1. 检查按键代码:确保传入的按键代码是有效的,并且存在对应的按键事件处理程序。 2. 检查程序逻辑:仔细检查调用sendKeyDownUpSync()方法之前的逻辑代码,确保该方法能够被正确调用到。 3. 处理线程问题:确保调用sendKeyDownUpSync()方法的线程没有被阻塞或者进入无限循环状态。 4. 使用其他方法:如果系统限制了某些按键事件的模拟,可以尝试使用其他方法来模拟按键事件,例如Instrumentation类中的其他方法。 需要注意的是,sendKeyDownUpSync()方法是系统级别的方法,一般情况下不推荐使用,因为它可用于执行一些特殊的操作,可能会导致系统稳定性问题或者安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

money的大雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值