在这篇文章中,我们将带领您了解android开发使用setOnClickListener点击事件实现双击事件的解决方法的全貌,包括android双击事件的相关情况。同时,我们还将为您介绍有关Andro
在这篇文章中,我们将带领您了解android开发使用setOnClickListener点击事件实现双击事件的解决方法的全貌,包括android 双击事件的相关情况。同时,我们还将为您介绍有关Android onClick按钮单击事件的四种常用写法、Android onClick方法与setOnClickListener方法对比、Android setOnclicklistener 空指针错误、Android setOnClickListener方法 – 它是如何工作的?的知识,以帮助您更好地理解这个主题。
本文目录一览:- android开发使用setOnClickListener点击事件实现双击事件的解决方法(android 双击事件)
- Android onClick按钮单击事件的四种常用写法
- Android onClick方法与setOnClickListener方法对比
- Android setOnclicklistener 空指针错误
- Android setOnClickListener方法 – 它是如何工作的?
android开发使用setOnClickListener点击事件实现双击事件的解决方法(android 双击事件)
android没有提供给我们直接设置双击事件的方法,当然可以使用setonTouchListener使用,这里提供一种简洁的实现方法
使用kotlin实现代码如下:
private var lastClickTime = 0L
textView.setonClickListener {
val clickTime = System.currentTimeMillis()
lastClickTime = if (lastClickTime > 0L && clickTime - lastClickTime < 500) {
LogUtils.e("double click:${clickTime - lastClickTime}")
0L
} else {
clickTime
}
}
Android onClick按钮单击事件的四种常用写法
这里使用四种onClick单击事件,来实现电话拔号器的DEMO。
XML文件
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:ems="10" android:id="@+id/et_number" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dial_number" android:id="@+id/bt_dial" android:layout_below="@id/et_number" android:layout_alignRight="@id/et_number" android:layout_alignEnd="@id/et_number" />
第一种、匿名内部类:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialPhone(); } }); }
第二种、自定义单击事件监听类:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setonClickListener(new MyListener()); } private class MyListener implements View.OnClickListener { @Override public void onClick(View view) { dialPhone(); } }
第三种、Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理:
public class MainActivity extends Activity implements View.OnClickListener { EditText et_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setonClickListener(this); } public void onClick(View view) { switch (view.getId()){ case R.id.bt_dial: dialPhone(); break; default: break; } } }
第四种、在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:
<Button android:onClick="dialphonemethod" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dial_number" android:id="@+id/bt_dial" android:layout_below="@id/et_number" android:layout_alignRight="@id/et_number" android:layout_alignEnd="@id/et_number" /> public void dialphonemethod(View view){ dialPhone(); } private void dialPhone() { String number = et_number.getText().toString().trim(); if (TextUtils.isEmpty(number)){ Toast.makeText(this,"电话号码不能为空",Toast.LENGTH_LONG).show(); return; } Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + number)); startActivity(intent); }
总结:
第四种写法整个代码中都不用声明button就可以实现button的单击事件。但通常不推荐这样使用,第三种方法是onClick最佳的的使用方式。按钮少的时候用匿名内部类会比较快,比如写demo测试的时候。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!
Android onClick方法与setOnClickListener方法对比
Android onClick 与 setonClickListener区别
为Android Widgets添加点击事件处理函数又两种方法,一个是在Xml文件中添加onClick属性,然后在代码中添加对应的函数。另一个是直接在代码中添加setonClickListener函数。两者什么区别呢?以Button控件为例讲解一下。
方法一
在Xml中添加onClick属性
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/mybutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="Press Me" android:onClick="buttonClick"/> </RelativeLayout>
在代码中添加对应的函数buttonClick,注意要添加到当前Activity对应的java类中。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void buttonClick(View view) { Toast.makeText(this,"Button was clicked",Toast.LENGTH_SHORT).show(); } // .... }
方法二
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button)findViewById(R.id.mybutton); button.setonClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,Toast.LENGTH_SHORT).show(); } }); } }
两者的共同点
两者底层没有区别。
两者的区别
使用第一种方法的注意事项:
1. 事件处理函数必须是public的。
2. 事件处理函数必须在Activity中定义。
3. 事件处理函数必须有一个View类型的参数。
4. 只能用在API Level 4及以后的版本。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
Android setOnclicklistener 空指针错误
@神经病胡子 你好,想跟你请教个问题:
java代码没有问题的
saveButton=(Button)this.findViewById(R.id.main_save);
saveButton.setOnClickListener(this);
只不过之前改动了一下xml文件 程序运行就老是出现空指针错误
07-12 13:11:29.454: E/AndroidRuntime(704): FATAL EXCEPTION: main
07-12 13:11:29.454: E/AndroidRuntime(704): java.lang.NullPointerException
07-12 13:11:29.454: E/AndroidRuntime(704): at com.activity.ChatScrawlActivity.FindDrawID(ChatScrawlActivity.java:154)
07-12 13:11:29.454: E/AndroidRuntime(704): at com.activity.ChatScrawlActivity.toDrawView(ChatScrawlActivity.java:217)
07-12 13:11:29.454: E/AndroidRuntime(704): at com.activity.ChatScrawlActivity$1.handleMessage(ChatScrawlActivity.java:111)
07-12 13:11:29.454: E/AndroidRuntime(704): at android.os.Handler.dispatchMessage(Handler.java:99)
解决方法也是各种奇葩
各路神仙有谁遇到过这个问题吗
拯救小弟于水深火热中
感激不尽
Android setOnClickListener方法 – 它是如何工作的?
我无法理解这段代码.我得到findViewById将获得按钮小部件,然后它将投射它.然后,它将使用该按钮来调用setonClickListener方法.但是,我不知道该参数是什么传递给setonClickListener,我以前从未见过这样的代码.它是如何创建一个新对象但是能够在另一个方法的参数中创建自己的方法?如果有人能够解释那就好了.另外,setonClickListener方法接受什么类型的对象?
btn = (Button)findViewById(R.id.firstButton);
btn.setonClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv.setText(months[rand.nextInt(12)]);
tv.setTextColor(Color.rgb(rand.nextInt(255)+1, rand.nextInt(255)+1, rand.nextInt(255)+1));
}
});
解决方法:
它的工作原理如下. View.OnClickListenere已定义 –
public interface OnClickListener {
void onClick(View v);
}
据我们所知,您无法实例化OnClickListener对象,因为它没有实现方法.因此,有两种方法可以实现 – 您可以实现此接口,它将覆盖onClick方法,如下所示:
public class MyListener implements View.OnClickListener {
@Override
public void onClick (View v) {
// your code here;
}
}
但是每次想要设置点击监听器时都要这么做是很乏味的.因此,为了避免这种情况,您可以在现场提供方法的实现,就像您给出的示例一样.
setonClickListener将View.OnClickListener作为其参数.
我们今天的关于android开发使用setOnClickListener点击事件实现双击事件的解决方法和android 双击事件的分享就到这里,谢谢您的阅读,如果想了解更多关于Android onClick按钮单击事件的四种常用写法、Android onClick方法与setOnClickListener方法对比、Android setOnclicklistener 空指针错误、Android setOnClickListener方法 – 它是如何工作的?的相关信息,可以在本站进行搜索。
本文标签: