btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这里添加处理 }
});
我想明白,上面代码第二行最后,这个new究竟新建了什么东西,是新建了一个函数?
而“View.OnClickListener() ”在这里起什么作用? 是完成 函数类型转换 吗?就是把后面大括号里面的函数转成这个函数?
可是为什么要完成这个转换呢?函数本来就只是一个入口地址,又不存在“类型”一说。
2. 在main.xml中,指定id的时候,这个"@+id/txtview1"该作何理解? 我知道它的作用会在gen\R.java中生成一个txtview1的id,并且该id的值有编译器自动生成;可是 @+id 有无特殊含义? @+是不是表示 R.java中寻找的意思?
比如下面的:
<TextView android:id="@+id/txtview1"
android:layout_width="200px"
android:layout_height="wrap_content"
android:text="Test marquee for TextView, which should be very long!!"
android:layout_gravity="center"
android:ellipsize="marquee"
android:singleLine="true"
android:focusable="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
/>
39 个解决方案
#1
问题一:
View.OnClickListener是一个类,或者是一个接口。所以这里new了一个类,产生了一个对象。
由于View.OnClickListener里面有纯虚的函数,所以下面必须要实现onClick函数。
这是java的风格,如果改为c++风格,则(大概实现一下):
class A public View.OnClickListener
{
//重写
public void onClick(View v) {
//这里添加处理 }
}
};
A a = new A;
btnChange.setOnClickListener(a);
View.OnClickListener是一个类,或者是一个接口。所以这里new了一个类,产生了一个对象。
由于View.OnClickListener里面有纯虚的函数,所以下面必须要实现onClick函数。
这是java的风格,如果改为c++风格,则(大概实现一下):
class A public View.OnClickListener
{
//重写
public void onClick(View v) {
//这里添加处理 }
}
};
A a = new A;
btnChange.setOnClickListener(a);
#2
@+id/txtview1
这就是规定了,其中@+必须(具体的我没详细研究),id就是在R.java里面产生一个叫做id的类,如下:
public static final class id {
public static final int content=0x7f050001;
public static final int content2=0x7f050002;
public static final int sv=0x7f050000;
}
你自己看R.java吧。
后面的txtview1,当然就是变量名字了。
这就是规定了,其中@+必须(具体的我没详细研究),id就是在R.java里面产生一个叫做id的类,如下:
public static final class id {
public static final int content=0x7f050001;
public static final int content2=0x7f050002;
public static final int sv=0x7f050000;
}
你自己看R.java吧。
后面的txtview1,当然就是变量名字了。
#3
问题一:
其实View.OnClickListener就是一个叫OnClickListener的接口,在View包里面。
相当于c++的命名空间,如下:
View::OnClickListener
其实View.OnClickListener就是一个叫OnClickListener的接口,在View包里面。
相当于c++的命名空间,如下:
View::OnClickListener
#4
谢谢楼上,不过我还不是太清楚,
问题1. 究竟是类 还是接口? 哪位能再给说说
问题1. 究竟是类 还是接口? 哪位能再给说说
#5
接口、类和struct,这些东西并没有什么本质上的区别。
类也可以有纯虚的,在c++里面并不区别类与接口(写代码也不区别)
java里面有接口定义关键字,我估计,java里面的接口必须纯虚,而类必须没有纯虚。
不过这些都不重要。就是一个类而已。
OnClickListener的申明如下:
public static interface
View.OnClickListener
...
abstract void onClick(View v)
Called when a view has been clicked.
类也可以有纯虚的,在c++里面并不区别类与接口(写代码也不区别)
java里面有接口定义关键字,我估计,java里面的接口必须纯虚,而类必须没有纯虚。
不过这些都不重要。就是一个类而已。
OnClickListener的申明如下:
public static interface
View.OnClickListener
...
abstract void onClick(View v)
Called when a view has been clicked.
#6
在eclipse里面,如果你new一个类,而这个类有纯虚函数,会编译不过,提示需要实现某纯虚函数,很简单,一看就明白了。
#7
btnChange.setOnClickListener()括号中是要传进去一个OnClickListener类的,这个类负责监听btnChange按钮的状态,其实你完全可以新建一个OnClickListener类让后把它传进去,不过为了不那么麻烦,通常的做法是直接新建一个这样的类。这样应该能理解吧。深入了解java语言之后就会明白的。
OnClickListener listener=new OnClickListener();
btnChange.setOnClickListener(listener);
OnClickListener listener=new OnClickListener();
btnChange.setOnClickListener(listener);
#8
java语言中
接口用interface修饰,其方法都是纯虚的,没有变量。
如果一个类中有abstract函数,则整个类必须申明为abstract类型。
其余就是普通类。
所以,类中也可以有纯虚函数。
接口用interface修饰,其方法都是纯虚的,没有变量。
如果一个类中有abstract函数,则整个类必须申明为abstract类型。
其余就是普通类。
所以,类中也可以有纯虚函数。
#9
@+id/txtview1
就是当txtview1这个ID不存在的时候,创建一个ID
就是当txtview1这个ID不存在的时候,创建一个ID
#10
第一个问题:其实在创建了一个匿名类设置到Button的监听器上,自己完全可以定义一个类A并实现监听器接口,然后用A定义一个变量a,再使用btnChange.setOnClickListener(a)这种形式设置事件监听器了。
Java里面特有的一种匿名类使用方式,多用在事件监听器的设置上。
Java里面特有的一种匿名类使用方式,多用在事件监听器的设置上。
#11
谢谢诸位,似乎了解了一点。那么,下面这第一行代码又是什么意思呢
public class Main extends Activity implements android.view.View.OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
public class Main extends Activity implements android.view.View.OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
#12
onCreate的套路代码,setContentView(R.layout.main)定义Activity的布局格式 通过R.layout.main来定义
#13
btnChange.setOnClickListener()括号中是要传进去一个OnClickListener类的,这个类负责监听btnChange按钮的状态
#14
貌似大神们已经把我想说的都说了。。
个人感觉这个"@+id/txtview1就是自定义的一个符号吧,为了在程序里用到。
看来有些我有点拿来主义了。有些原理东西我还得再学习学习。
个人感觉这个"@+id/txtview1就是自定义的一个符号吧,为了在程序里用到。
看来有些我有点拿来主义了。有些原理东西我还得再学习学习。
#15
1、如果LZ懂的C/C++的话,应该知道“回调函数”这个东东。
“View.OnClickListener()”就跟回调函数中的函数地址一个性质。
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这里添加处理 }
});
等价于:
OnClickListener btnChangeClick = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
btnChange.setOnClickListener(btnChangeClick);
意思就是单击btnChange按钮时,将调用btnChangeClick.onClick()函数。
2、@+id 表明想为一个控件定义一个ID,这个是Android的语法规定;
txtview1 就是控件的名字。
#16
#17
第一个就是匿名内部类的事,先了解一下知识点。
第二个@+id/,写法是固定的。我感觉+是增加或新建一个id到R文件的意思。像使用相对布局时,就直接用@id/指定相对的控件id。
第二个@+id/,写法是固定的。我感觉+是增加或新建一个id到R文件的意思。像使用相对布局时,就直接用@id/指定相对的控件id。
#18
应该是抽象结构,在java里面没有纯需函数的概念,c++里面才有
#19
谢谢楼上的回复,两个问题基本都清楚了。
但是,有朋友说这是回调函数,应该不是一码子事情吧?这倒搞得我有点迷糊了。
另外,我想问的是,这里 又有个问题,implements后面是什么意思?
public class Main extends Activity implements android.view.View.OnClickListener {
。。。
}
但是,有朋友说这是回调函数,应该不是一码子事情吧?这倒搞得我有点迷糊了。
另外,我想问的是,这里 又有个问题,implements后面是什么意思?
public class Main extends Activity implements android.view.View.OnClickListener {
。。。
}
#20
从接口继承用implements,从类继承用extends
c++里面统一用冒号加public/protected等来实现,比如:
class A : public P
c++里面统一用冒号加public/protected等来实现,比如:
class A : public P
#21
回调函数也是一个变量,和int i;差不多。
只是回调函数可以被调用,也就是说,你先生成一个函数对象,把这个对象传给别人,别人在需要的时候,调用这个函数,这叫回调。
只是回调函数可以被调用,也就是说,你先生成一个函数对象,把这个对象传给别人,别人在需要的时候,调用这个函数,这叫回调。
#22
就是一个类中类,
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这里添加处理 }
});
可以看成是这个:
OnClickListener a= new OnClickListener() {
@Override
public void onClick(View v) {
}
};
btnChange.setOnClickListener(a);
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这里添加处理 }
});
可以看成是这个:
OnClickListener a= new OnClickListener() {
@Override
public void onClick(View v) {
}
};
btnChange.setOnClickListener(a);
#23
#24
@+id 表明想为一个控件定义(增加)一个ID,
当需要引用的时候,就不能再有+号了
当需要引用的时候,就不能再有+号了
#25
@+id/xxx的+是指在R.id中查找有无名为xxx的常量,如果有,就覆盖了,没有,就增加一个。
#26
问题一:楼主你可以这样来写会更好的理解
Button btnChange = (Button) this.findViewById(R.id.btnChange);
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
那其实只是给你的按钮绑定一个监听器,当你按下按钮后要触发什么事件,可以写在onClick函数中
问题二:
你的理解和我的差不多,我想这是google的规范 我们照这样写就行了。
哈哈我也是新手,共同学习阿
Button btnChange = (Button) this.findViewById(R.id.btnChange);
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
那其实只是给你的按钮绑定一个监听器,当你按下按钮后要触发什么事件,可以写在onClick函数中
问题二:
你的理解和我的差不多,我想这是google的规范 我们照这样写就行了。
哈哈我也是新手,共同学习阿
#27
那这个public class Main extends Activity implements android.view.View.OnClickListener
等于是有两个父类,对吗?
#28
#29
什么纯虚函数?那是抽象方法好不!java里不叫函数 叫方法。
#30
你看下源码,或者反编译下,可以大概看到
View.OnClickListener是个静态接口,像上面的用法其实等同于你写一个实现接口的类,然后new一个这个类的对象作为setOnClickListener的参数
我之前也是一直迷糊
View.OnClickListener是个静态接口,像上面的用法其实等同于你写一个实现接口的类,然后new一个这个类的对象作为setOnClickListener的参数
我之前也是一直迷糊
#31
Listener当然是接口了~~
#32
我也补补基础知识
#33
java里面没有多继承的概念,只能继承一个父类,如果要实现多个父类里面的方法,就需要用到接口这个东东,实现接口就是通过implements来实现的。
接口可以看成是比抽象类还抽象的类,接口的所有方法都不能有实现,只能有声明,也就是不能有大括号{};
接口可以看成是比抽象类还抽象的类,接口的所有方法都不能有实现,只能有声明,也就是不能有大括号{};
#34
#35
楼主。。建议你去学习下java基础。。。。
#36
问题一:button里的方法setOnClickListener(OnClickListener a)用来给button注册一个click监听器,当发生click事件时执行其处理逻辑,跟回调函数类似。而这个监听器就是传入的参数a,这样看就跟普通的方法一样。不同的是这个监听器是一个接口,而接口是不能直接创建对象的,需要实现这个接口的虚方法onClick(View v),这个方法也就是你点击事件的处理逻辑。看26楼的写法,就是这个意思。
//参数是一个对象,这个对象的类实现了接口OnClickListener,也就是重写了onClick(View v)方法
//而这个方法就是点击事件的处理逻辑
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
如果还看不懂,建议还是先学下java吧。
问题二:@表示引用资源,@+id表示增加一个id。
//参数是一个对象,这个对象的类实现了接口OnClickListener,也就是重写了onClick(View v)方法
//而这个方法就是点击事件的处理逻辑
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
如果还看不懂,建议还是先学下java吧。
问题二:@表示引用资源,@+id表示增加一个id。
#37
第一个:那是个接口,后面的方法需要去实现
第二个: @+id表示增加一个id,而@id表示引用已经有的id
第二个: @+id表示增加一个id,而@id表示引用已经有的id
#38
#39
小小建议:
1)语法层面:《Java2实用教程(第三版).pdf》,它的 第89/447页,和接口有关的匿名类。
2)Android层面:《深入浅出Android.pdf》 文件大小:586KB 文件总页数:89,它的 第29/89页,获取标识ID。
有时间,不妨看看,这两本书,都有电子档,csdn下载里有。
1)语法层面:《Java2实用教程(第三版).pdf》,它的 第89/447页,和接口有关的匿名类。
2)Android层面:《深入浅出Android.pdf》 文件大小:586KB 文件总页数:89,它的 第29/89页,获取标识ID。
有时间,不妨看看,这两本书,都有电子档,csdn下载里有。
#1
问题一:
View.OnClickListener是一个类,或者是一个接口。所以这里new了一个类,产生了一个对象。
由于View.OnClickListener里面有纯虚的函数,所以下面必须要实现onClick函数。
这是java的风格,如果改为c++风格,则(大概实现一下):
class A public View.OnClickListener
{
//重写
public void onClick(View v) {
//这里添加处理 }
}
};
A a = new A;
btnChange.setOnClickListener(a);
View.OnClickListener是一个类,或者是一个接口。所以这里new了一个类,产生了一个对象。
由于View.OnClickListener里面有纯虚的函数,所以下面必须要实现onClick函数。
这是java的风格,如果改为c++风格,则(大概实现一下):
class A public View.OnClickListener
{
//重写
public void onClick(View v) {
//这里添加处理 }
}
};
A a = new A;
btnChange.setOnClickListener(a);
#2
@+id/txtview1
这就是规定了,其中@+必须(具体的我没详细研究),id就是在R.java里面产生一个叫做id的类,如下:
public static final class id {
public static final int content=0x7f050001;
public static final int content2=0x7f050002;
public static final int sv=0x7f050000;
}
你自己看R.java吧。
后面的txtview1,当然就是变量名字了。
这就是规定了,其中@+必须(具体的我没详细研究),id就是在R.java里面产生一个叫做id的类,如下:
public static final class id {
public static final int content=0x7f050001;
public static final int content2=0x7f050002;
public static final int sv=0x7f050000;
}
你自己看R.java吧。
后面的txtview1,当然就是变量名字了。
#3
问题一:
其实View.OnClickListener就是一个叫OnClickListener的接口,在View包里面。
相当于c++的命名空间,如下:
View::OnClickListener
其实View.OnClickListener就是一个叫OnClickListener的接口,在View包里面。
相当于c++的命名空间,如下:
View::OnClickListener
#4
谢谢楼上,不过我还不是太清楚,
问题1. 究竟是类 还是接口? 哪位能再给说说
问题1. 究竟是类 还是接口? 哪位能再给说说
#5
接口、类和struct,这些东西并没有什么本质上的区别。
类也可以有纯虚的,在c++里面并不区别类与接口(写代码也不区别)
java里面有接口定义关键字,我估计,java里面的接口必须纯虚,而类必须没有纯虚。
不过这些都不重要。就是一个类而已。
OnClickListener的申明如下:
public static interface
View.OnClickListener
...
abstract void onClick(View v)
Called when a view has been clicked.
类也可以有纯虚的,在c++里面并不区别类与接口(写代码也不区别)
java里面有接口定义关键字,我估计,java里面的接口必须纯虚,而类必须没有纯虚。
不过这些都不重要。就是一个类而已。
OnClickListener的申明如下:
public static interface
View.OnClickListener
...
abstract void onClick(View v)
Called when a view has been clicked.
#6
在eclipse里面,如果你new一个类,而这个类有纯虚函数,会编译不过,提示需要实现某纯虚函数,很简单,一看就明白了。
#7
btnChange.setOnClickListener()括号中是要传进去一个OnClickListener类的,这个类负责监听btnChange按钮的状态,其实你完全可以新建一个OnClickListener类让后把它传进去,不过为了不那么麻烦,通常的做法是直接新建一个这样的类。这样应该能理解吧。深入了解java语言之后就会明白的。
OnClickListener listener=new OnClickListener();
btnChange.setOnClickListener(listener);
OnClickListener listener=new OnClickListener();
btnChange.setOnClickListener(listener);
#8
java语言中
接口用interface修饰,其方法都是纯虚的,没有变量。
如果一个类中有abstract函数,则整个类必须申明为abstract类型。
其余就是普通类。
所以,类中也可以有纯虚函数。
接口用interface修饰,其方法都是纯虚的,没有变量。
如果一个类中有abstract函数,则整个类必须申明为abstract类型。
其余就是普通类。
所以,类中也可以有纯虚函数。
#9
@+id/txtview1
就是当txtview1这个ID不存在的时候,创建一个ID
就是当txtview1这个ID不存在的时候,创建一个ID
#10
第一个问题:其实在创建了一个匿名类设置到Button的监听器上,自己完全可以定义一个类A并实现监听器接口,然后用A定义一个变量a,再使用btnChange.setOnClickListener(a)这种形式设置事件监听器了。
Java里面特有的一种匿名类使用方式,多用在事件监听器的设置上。
Java里面特有的一种匿名类使用方式,多用在事件监听器的设置上。
#11
谢谢诸位,似乎了解了一点。那么,下面这第一行代码又是什么意思呢
public class Main extends Activity implements android.view.View.OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
public class Main extends Activity implements android.view.View.OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
#12
onCreate的套路代码,setContentView(R.layout.main)定义Activity的布局格式 通过R.layout.main来定义
#13
btnChange.setOnClickListener()括号中是要传进去一个OnClickListener类的,这个类负责监听btnChange按钮的状态
#14
貌似大神们已经把我想说的都说了。。
个人感觉这个"@+id/txtview1就是自定义的一个符号吧,为了在程序里用到。
看来有些我有点拿来主义了。有些原理东西我还得再学习学习。
个人感觉这个"@+id/txtview1就是自定义的一个符号吧,为了在程序里用到。
看来有些我有点拿来主义了。有些原理东西我还得再学习学习。
#15
1、如果LZ懂的C/C++的话,应该知道“回调函数”这个东东。
“View.OnClickListener()”就跟回调函数中的函数地址一个性质。
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这里添加处理 }
});
等价于:
OnClickListener btnChangeClick = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
btnChange.setOnClickListener(btnChangeClick);
意思就是单击btnChange按钮时,将调用btnChangeClick.onClick()函数。
2、@+id 表明想为一个控件定义一个ID,这个是Android的语法规定;
txtview1 就是控件的名字。
#16
#17
第一个就是匿名内部类的事,先了解一下知识点。
第二个@+id/,写法是固定的。我感觉+是增加或新建一个id到R文件的意思。像使用相对布局时,就直接用@id/指定相对的控件id。
第二个@+id/,写法是固定的。我感觉+是增加或新建一个id到R文件的意思。像使用相对布局时,就直接用@id/指定相对的控件id。
#18
应该是抽象结构,在java里面没有纯需函数的概念,c++里面才有
#19
谢谢楼上的回复,两个问题基本都清楚了。
但是,有朋友说这是回调函数,应该不是一码子事情吧?这倒搞得我有点迷糊了。
另外,我想问的是,这里 又有个问题,implements后面是什么意思?
public class Main extends Activity implements android.view.View.OnClickListener {
。。。
}
但是,有朋友说这是回调函数,应该不是一码子事情吧?这倒搞得我有点迷糊了。
另外,我想问的是,这里 又有个问题,implements后面是什么意思?
public class Main extends Activity implements android.view.View.OnClickListener {
。。。
}
#20
从接口继承用implements,从类继承用extends
c++里面统一用冒号加public/protected等来实现,比如:
class A : public P
c++里面统一用冒号加public/protected等来实现,比如:
class A : public P
#21
回调函数也是一个变量,和int i;差不多。
只是回调函数可以被调用,也就是说,你先生成一个函数对象,把这个对象传给别人,别人在需要的时候,调用这个函数,这叫回调。
只是回调函数可以被调用,也就是说,你先生成一个函数对象,把这个对象传给别人,别人在需要的时候,调用这个函数,这叫回调。
#22
就是一个类中类,
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这里添加处理 }
});
可以看成是这个:
OnClickListener a= new OnClickListener() {
@Override
public void onClick(View v) {
}
};
btnChange.setOnClickListener(a);
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这里添加处理 }
});
可以看成是这个:
OnClickListener a= new OnClickListener() {
@Override
public void onClick(View v) {
}
};
btnChange.setOnClickListener(a);
#23
#24
@+id 表明想为一个控件定义(增加)一个ID,
当需要引用的时候,就不能再有+号了
当需要引用的时候,就不能再有+号了
#25
@+id/xxx的+是指在R.id中查找有无名为xxx的常量,如果有,就覆盖了,没有,就增加一个。
#26
问题一:楼主你可以这样来写会更好的理解
Button btnChange = (Button) this.findViewById(R.id.btnChange);
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
那其实只是给你的按钮绑定一个监听器,当你按下按钮后要触发什么事件,可以写在onClick函数中
问题二:
你的理解和我的差不多,我想这是google的规范 我们照这样写就行了。
哈哈我也是新手,共同学习阿
Button btnChange = (Button) this.findViewById(R.id.btnChange);
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
那其实只是给你的按钮绑定一个监听器,当你按下按钮后要触发什么事件,可以写在onClick函数中
问题二:
你的理解和我的差不多,我想这是google的规范 我们照这样写就行了。
哈哈我也是新手,共同学习阿
#27
那这个public class Main extends Activity implements android.view.View.OnClickListener
等于是有两个父类,对吗?
#28
#29
什么纯虚函数?那是抽象方法好不!java里不叫函数 叫方法。
#30
你看下源码,或者反编译下,可以大概看到
View.OnClickListener是个静态接口,像上面的用法其实等同于你写一个实现接口的类,然后new一个这个类的对象作为setOnClickListener的参数
我之前也是一直迷糊
View.OnClickListener是个静态接口,像上面的用法其实等同于你写一个实现接口的类,然后new一个这个类的对象作为setOnClickListener的参数
我之前也是一直迷糊
#31
Listener当然是接口了~~
#32
我也补补基础知识
#33
java里面没有多继承的概念,只能继承一个父类,如果要实现多个父类里面的方法,就需要用到接口这个东东,实现接口就是通过implements来实现的。
接口可以看成是比抽象类还抽象的类,接口的所有方法都不能有实现,只能有声明,也就是不能有大括号{};
接口可以看成是比抽象类还抽象的类,接口的所有方法都不能有实现,只能有声明,也就是不能有大括号{};
#34
#35
楼主。。建议你去学习下java基础。。。。
#36
问题一:button里的方法setOnClickListener(OnClickListener a)用来给button注册一个click监听器,当发生click事件时执行其处理逻辑,跟回调函数类似。而这个监听器就是传入的参数a,这样看就跟普通的方法一样。不同的是这个监听器是一个接口,而接口是不能直接创建对象的,需要实现这个接口的虚方法onClick(View v),这个方法也就是你点击事件的处理逻辑。看26楼的写法,就是这个意思。
//参数是一个对象,这个对象的类实现了接口OnClickListener,也就是重写了onClick(View v)方法
//而这个方法就是点击事件的处理逻辑
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
如果还看不懂,建议还是先学下java吧。
问题二:@表示引用资源,@+id表示增加一个id。
//参数是一个对象,这个对象的类实现了接口OnClickListener,也就是重写了onClick(View v)方法
//而这个方法就是点击事件的处理逻辑
btnChange.setOnClickListener(new MyOnClickListener());
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
//这里添加处理 }
});
如果还看不懂,建议还是先学下java吧。
问题二:@表示引用资源,@+id表示增加一个id。
#37
第一个:那是个接口,后面的方法需要去实现
第二个: @+id表示增加一个id,而@id表示引用已经有的id
第二个: @+id表示增加一个id,而@id表示引用已经有的id
#38
#39
小小建议:
1)语法层面:《Java2实用教程(第三版).pdf》,它的 第89/447页,和接口有关的匿名类。
2)Android层面:《深入浅出Android.pdf》 文件大小:586KB 文件总页数:89,它的 第29/89页,获取标识ID。
有时间,不妨看看,这两本书,都有电子档,csdn下载里有。
1)语法层面:《Java2实用教程(第三版).pdf》,它的 第89/447页,和接口有关的匿名类。
2)Android层面:《深入浅出Android.pdf》 文件大小:586KB 文件总页数:89,它的 第29/89页,获取标识ID。
有时间,不妨看看,这两本书,都有电子档,csdn下载里有。