※ 引述《CPU100 (小丑)》之铭言:
: 之前完全没接触过JAVA 更别提开发Android程式了
: 目前老板突然丢一只Android的程式过来,实在有看没懂,希望版上前辈指导
: 以下是在看程式遇到的问题
: 在layout的XML里,同样是button ,有一个有使用onClick这个事件,一个没有none
: 但两个按钮点击都有功能的
同样的事件可以有多种表示方法
以下这种是写至在 xml (不推荐
: 1.这是有使用onClick
: public void btn_onClick (View view) {
: Intent intent = new Intent(this, Main3Activity.class);
: startActivity(intent);
: MainActivity.this.finish();
这样代表着在程式内宣告了一个 btn_onClick 方法
并且你可以在 xml 内看到以下的写法
<Button
android:onClick="btn_onClick"
android:text="push me"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
以下这种是写在程式内(较常见
: 2.这是没有使用onClick
: registered.setOnClickListener(new View.OnClickListener() {
: @Override
: public void onClick(View v) {
: Intent intent = new Intent(Main2Activity.this,
: registeredpage.class);
: startActivity(intent);
: Main2Activity.this.finish();
第二种写法代表着他是用匿名类别的物件来实作的
可以参考良葛格的文章
https://openhome.cc/Gossip/Java/AnonymousInnerClass.html
也可以参考我之前写过的一篇文章的解释
https://www.ptt.cc/bbs/AndroidDev/M.1326163107.A.BDA.html
: 请问这两种方式,什么情况下使用呢?
: 如果我想把第一个有使用onClick的按钮改用第二种写法,该怎么改呢?
: 谢谢!!
如果要改成第二种写法
首先要在 xml 内将该 Button 设定一个 id
并且在主程式内透过
Button btn = (Button) findViewById(R.id.your_id);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// do something
}
});
这样就可以完成一个事件的宣告了
比较不推荐第一种的写法
因为在 code review 的时候不好追踪
大部分的情况之下是会采取第二种的写法
除了可以共用 Listener 以外
可读性也比较高
对于 Button 的运作也可以参考一下拙作
http://givemepass.blogspot.tw/2016/11/button.html
虽然你是临时被老板叫去写 Java
如果未来还是要开发 Android 建议是从 Java 的基础观念学起