Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我
所有文章 外链

Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我

安卓onClick事件监听的实现方式

阅读数:次 2016-09-24
字数统计: 847字   |   阅读时长≈ 3分

昨天做了转正汇报,三个月的试用期快结束了,不得不感慨时光流逝啊。毕业三个月了,下一届的师弟师妹都开始找工作了。

总体来说,这三个月是非常充实的,虽然没干多少事吧,但学到了很多东西,技术上的,与人交往上,都有所进步。年轻的时候还是忙点好,闲着也没事干,荒废大好时光。不如多干点活,多积累点经验。

扯了一会蛋,说下正事。

最近由于项目需要,搞起了Android;麻蛋,一头雾水哦,我接触Java也不过才两个月,安卓,我的天;项目需要啊,硬着头皮也要上啊。

最好的教程还是官方API,不知道的就查一下,很明了,这一块对英语要求较高,还要加强,这是成为一个优秀的程序员必备的,毕竟编程是英语世界的人发明的,当然,无论哪个行业,融入英语世界才能了解到世界上最先进的知识。

业余时间在CSDN上看pig-coder的博客,是比较系统的介绍,所以选择了他的博客。感谢作者的无私奉献。

看完了基础、布局、UI,进度有点慢,要加把劲了。
这篇把onClick事件监听的几种实现方式抠出来,作一篇博客。

主要有以下三种方式:

匿名内部类监听按钮点击事件

1
2
3
4
5
6
7
#activity_login.xml   layout 
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/button_name"
android:id="@+id/button"
android:layout_gravity="bottom" />
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# LoginActivity.java
private Button loginButton;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

/*
* 1.初始化当前所需的控件
* findViewById--返回一个view对象
* 通过R.java.id找到
* */
loginButton = (Button)findViewById(R.id.button_denglu);

/*
* 2.设置Button监听器,实现点击操作
* 通过匿名内部类方式实现
* */
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//当前点击动作
System.out.println("我的button被点击了");
}
});
}

独立类(外部类)实现

在此类的外部实现一个onClick类。
当遇到很多按钮需要添加事件时,通过这种方式可以设置同类的逻辑。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class LoginActivity extends AppCompatActivity   {
private Button bt1;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
bt1 = (Button) findViewById(R.id.button_denglu);
bt1.setOnClickListener(new myClickListener(){
@Override
public void onClick(View v) {
//调用父类的点击事件
super.onClick(v);
Toast.makeText(LoginActivity.this,"bt1要输出的逻辑",1).show();
}
});
}
}
//OnClickListener是一个接口
class myClickListener implements View.OnClickListener {
@Override
public void onClick(View v){
//这里可以写需要调用此外部类的公共点击事件
Log.i(TAG, "onClick: 父类的事件");
}
}

实现接口的方式实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
private Button bt1;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
bt1 = (Button)findViewById(R.id.button_denglu);

bt1.setOnClickListener(this);
}
@Override
public void onClick(View v){
Log.i(TAG, "onClick: 第三种实现方式");
}
}

实现页面跳转

必须在AndroidManifest.xml中注册跳转到的页面,activity。这就是之前为什么不能实现跳转的原因。

1
<activity android:name="Second" />

MainActivity中绑定onClick事件

1
2
3
4
5
6
7
8
9
Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this,Second.class);
startActivity(intent);
}
});
  • 本文作者: Linking
  • 本文链接: https://linking.fun/2016/09/24/安卓onClick事件监听的实现方式/
  • 版权声明: 版权所有,转载请注明出处!
  • Android onclick事件监听
  • Android

扫一扫,分享到微信

Adapter初识
git学习之三-最近遇到的坑
  1. 1. 匿名内部类监听按钮点击事件
  2. 2. 独立类(外部类)实现
  3. 3. 实现接口的方式实现
  4. 4. 实现页面跳转
© 2015-2026 Linking
GitHub:hexo-theme-yilia-plus by Litten
本站总访问量次 | 本站访客数人
  • 所有文章
  • 外链

tag:

  • weather
  • 需求
  • essay
  • basketball
  • olympic
  • nginx
  • APPScan
  • SQl盲注
  • xss
  • Ajax
  • ajax
  • ai
  • agent
  • openclaw
  • ccf
  • Nginx
  • HTML5
  • html5
  • hmtl5
  • sse
  • JavaScriptCore
  • Oracle
  • operation
  • Linux
  • deploy
  • Mac Office
  • markdown
  • ListView
  • GridView
  • MySQL
  • 慢查询
  • mongodb
  • 转置
  • thought
  • network
  • ubuntu
  • NetworkManager
  • RFKill
  • Netplan
  • avatar
  • cocoa
  • blog
  • Gitalk
  • container
  • macvlan
  • docker
  • oracle
  • cookie
  • patch
  • gitea
  • git
  • iOS
  • https
  • 多线程
  • bundle
  • 兼容性
  • HTTP
  • 绘图
  • cs
  • java
  • 效率
  • 快捷键
  • route
  • nodejs
  • pip
  • arcgis
  • arcgis 建模
  • 标识
  • redis
  • read
  • bookList
  • running
  • showdoc
  • disk
  • unit-test
  • D.Wade
  • thoughts
  • duoduo
  • Python
  • python
  • tomcat
  • 读书节
  • session
  • jdk
  • war
  • 加班
  • Android onclick事件监听
  • 正则
  • 手机品牌匹配
  • ntp
  • OpenLayers
  • Geoserver
  • wechat
  • 微信公众号
  • 爬虫
  • WeChat
  • 张靓颖
  • 动漫
  • vpn
  • PPT
  • MarkDown
  • plan
  • 朱赟
  • 极客时间专栏
  • 极客邦
  • 模块化
  • MVC
  • excel
  • NBA
  • kobe
  • team
  • crawler
  • 进度条
  • ssl
  • book
  • anti-stealing-link
  • Agentic Engineering
  • Vibe Coding
  • Software 3.0
  • Andrej Karpathy
  • LLM
  • Programming
  • complain

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • GitHub Trending
  • OpenAI ChatGPT
  • Gitee码云
  • 简书
  • CSDN