반응형
보통 많은 사람들이 버튼을 리스너로 아래와 같이 많이 구현합니다.
-
package com.example.buttontest1;
-
-
import android.app.Activity;
-
import android.os.Bundle;
-
import android.view.View;
-
import android.view.View.OnClickListener;
-
import android.widget.Button;
-
import android.widget.Toast;
-
-
public class MainActivity extends Activity implements OnClickListener {
-
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
-
-
btn1.setOnClickListener(this);
-
btn2.setOnClickListener(this);
-
}
-
-
@Override
-
// TODO Auto-generated method stub
-
if (v == btn1) {
-
Toast toast = Toast.makeText(this, "Button1", Toast.LENGTH_SHORT);
-
toast.show();
-
-
} else if (v == btn2) {
-
Toast toast = Toast.makeText(this, "Button2", Toast.LENGTH_SHORT);
-
toast.show();
-
}
-
}
-
}
Listener가 아닌 Handler 방식은 아래와 같다.
먼저 Button을 상속받은 클래스를 아래와 같이 만든다.
-
package com.example.buttontest2;
-
-
import android.content.Context;
-
import android.util.AttributeSet;
-
import android.view.MotionEvent;
-
import android.view.View;
-
import android.widget.Button;
-
import android.widget.Toast;
-
-
-
super(context, attrs, defStyle);
-
// TODO Auto-generated constructor stub
-
-
@Override
-
// TODO Auto-generated method stub
-
Toast.makeText(getContext(), getText(), 0);
-
}
-
});
-
}
-
-
super(context, attrs);
-
// TODO Auto-generated constructor stub
-
@Override
-
// TODO Auto-generated method stub
-
Toast.makeText(getContext(), getText(), 0);
-
}
-
});
-
}
-
-
super(context);
-
// TODO Auto-generated constructor stub
-
@Override
-
// TODO Auto-generated method stub
-
Toast.makeText(getContext(), getText(), 0);
-
}
-
});
-
}
-
-
}
어떠한 생성자가 호출될지 모르기 때문에 아래와 같이 모두 포함시켜 주었다.
MainActivity는 건들 필요가 없다.
xml 코드를 보면 아래와 같다.
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
android:orientation="vertical" >
-
-
<com.example.buttontest2.MyButton
-
android:id="@+id/button1"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:text="Button1" />
-
-
<com.example.buttontest2.MyButton
-
android:id="@+id/button2"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:text="Button2" />
-
-
</LinearLayout>
상세하게 버튼의 위치를 설정해 줘야지만 찾을 수 있습니다.
버튼 리스너는 버튼을 누른상태에서는 반응이 없지만, 핸들러 방식으로 처리하면 터치방식이기에, 터치 되자마자 반응을 하기에 용도에 따라 사용을 합니다.
반응형
'Android' 카테고리의 다른 글
[Android Studio] The emulator process for AVD _xxx has terminated. (Emulator 실행 실패 문제 해결) (0) | 2022.04.07 |
---|---|
[Android] 화면 회전시 데이터 초기화 되지 않도록 하는 방법 (2) | 2014.10.27 |
[Eclipse] fail to create the java virtual machine (0) | 2014.10.27 |
WAIT_FOR_CONCURRENT_GC ?? (0) | 2013.08.30 |
죽지 않는 서비스 등록(알람 이용) (0) | 2013.08.30 |