Android 컨트롤 노트 - 수신 버튼 클릭 이벤트
1. Button, ImageButton은 모두 onClick 이벤트를 가지고 자신의 것이다.set OnclickListener(OnclickListener) 방법으로 클릭 이벤트를 추가합니다.
2. 모든 컨트롤은 온클릭 이벤트가 있고 버튼 컨트롤만 있는 것이 아니다.
3. 이벤트의 감청을 클릭하면 버튼을 클릭한 후에 어떤 동작이 일어나는지 실현할 수 있다.
이벤트 구현을 수신하는 몇 가지 쓰기 방법:
1. 익명 내부 클래스의 실현;
public class MainActivity extends Activity {
private Button loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
*
* findViewById--- View
* findViewById View Id ?
*/
loginButton=(Button) findViewById(R.id.button1);
// :
loginButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// onClick Button
System.out.println(" Button ");
}
});
}
}
2. 독립류의 실현;
public class MainActivity extends Activity {
private Button loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
*
* findViewById--- View
* findViewById View Id ?
*/
loginButton=(Button) findViewById(R.id.button1);
//
loginButton.setOnClickListener(new MyOnClickListener(){
public void onClick(View arg0) {
// onClick
super.onClick(arg0);
Toast.makeText(MainActivity.this, "button", 1).show();
};
} );
}
}
//OnClickListener ,
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i("tag"," onClick ");
}
} 이렇게 쓰는 장점은 내가 많은 노래 단추를 가지고 있는데 이 단추들은 자신만의 조작을 수행할 때 같은 조작을 해야 한다는 것이다. 그러면 이 같은 조작은 외부 클래스의 논리에 쓰일 수 있다.예를 들어 내가 버튼을 눌렀을 때 나는 내가 눌렀던 이 버튼이 반투명이 되기를 바란다. 우리는 반투명 코드를 독립된 클래스에 쓸 수 있다.
public class MainActivity extends Activity {
private Button loginButton1;
private Button loginButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
*
* findViewById--- View
* findViewById View Id ?
*/
loginButton1=(Button) findViewById(R.id.button1);
loginButton2=(Button) findViewById(R.id.button2);
//
loginButton1.setOnClickListener(new MyOnClickListener(){
public void onClick(View arg0) {
// onClick
super.onClick(arg0);
Toast.makeText(MainActivity.this, "button1", 1).show();
};
} );
loginButton1.setOnClickListener(new MyOnClickListener(){
public void onClick(View arg0) {
// onClick
super.onClick(arg0);
Toast.makeText(MainActivity.this, "button2", 1).show();
};
} );
}
}
//OnClickListener ,
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
arg0.setAlpha(0.5f);
}
} 3. 인터페이스를 실현하는 방식으로 실현한다.
public class MainActivity extends Activity implements OnClickListener {
private Button loginButton1;
private ImageButton imagBt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
*
* findViewById--- View
* findViewById View Id ?
*/
loginButton1=(Button) findViewById(R.id.button1);
imagBt=(ImageButton) findViewById(R.id.imageButton1);
//
loginButton1.setOnClickListener(listener);
imagBt.setOnClickListener(listener);
}
// OnClickListener
OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Click", 1).show();
}
};
@Override
public void onClick(View arg0) {
Log.i("tag","Hello");
}
} 보충:
1. 사실 우리가 본 것은 Botton이다. 사실 그들은 모두 View이다. 즉, View는 모든 컨트롤의 부류이다.
2,findViewById--는 하나의 View의 대상을 되돌려줍니다. 모든 src 폴더 아래의 자원은 R 파일에 유일한 Id가 있습니다. 이 함수는 R 파일을 통해 대응하는 button을 찾을 수 있습니다.
public static final int button1=0x7f080000; 그래서 우리가 R.id.button1을 방문하면 그에 대응하는 주소입니다.
3. OnClickListener는 하나의 인터페이스이다. 상기 세 가지 방식은 서로 다른 방법으로 이 인터페이스를 실현하고 이용하는 과정이다. 방법은 첫째, 익명 내부 클래스를 실현하는 것이고, 둘째, 외부 독립 클래스를 통해 실현하는 것이며, 셋째, 현재 클래스 내부에서 인터페이스를 실현하는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.