Android

Android - 04. 토스트 띄우기와 체크박스

보로로롬 2016. 7. 20. 11:09

Context 역할

-어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근하기

-안드로이드 시스템서비스에서 제공하는 api를 호출 할 수 있는 기능


저번에 나이를 입력하는 예제를 만들었던 거에 추가해서

토스트를 띄우는 것과 체크박스를 체크하는 예제를 해보겠습니다.


일단 layout폴더에 있는 activity_main.xml에 

저번에 쓴거 아래에 토스트를 띄울 버튼과 체크박스 2개를 추가해주세요.


<Button
android:id="@+id/toast_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="토스트 띄우기" />
<CheckBox
android:id="@+id/chk1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="체크박스1"
/>
<CheckBox
android:id="@+id/chk2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="체크박스2"
/>


그리고 MainActivity.java 에 추가적으로 이벤트등을 등록해주세요.
바뀐부분은 빨강으로 표시했습니다.
설명은 주석으로 써놨습니다.


package kr.mulcam.c902.hui.p0719;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText inputAge;
private Button btn;
private TextView result;
private Button toastBtn;
private CheckBox chk1;
private CheckBox chk2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), "이것이 토스트",1).show();
// 토스트가 뜨도록 show로 보여주는 코드입니다.
// this:토스트가 만들어질 컨텍스트 , 1:토스트가 떠있는 시간 길/짧 1/0
inputAge = (EditText) findViewById(R.id.num);
btn = (Button) findViewById(R.id.btn);
result = (TextView) findViewById(R.id.age);
toastBtn = (Button) findViewById(R.id.toast_btn);
chk1 = (CheckBox) findViewById(R.id.chk1);
chk2 = (CheckBox) findViewById(R.id.chk2);
//id값들은 신중하게 잘 지어야됨 모든 xml파일에서 하나의 id 네임스페이스를 사용함
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String age = inputAge.getText().toString();
result.setText("당신은 " + age + "살 이시군요");
inputAge.setText("");
}
});
toastBtn.setOnClickListener(new View.OnClickListener() {
// OnClickListener를 사용해서 클릭할때마다 이벤트를 적용해줍니다.
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "토스트가 떠염", 1).show(); //이자리에 this:이벤트처리 (onClickListener객체 컨텍스트x)
} //getApplicationContext() : 메인엑티비티가 멤버함수로 (상속받아서) 가지고 있는 저 함수를 불러서 컨텍스트 객체를 받아오던가
}); //MainActivity.this 이벤트처리 객체를 가리키는 this가 아닌 엑티비티를 가리키는 this
chk1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this , buttonView.getText().toString()
+"가 " + (isChecked ? "선택":"해제") +
"되었습니다.", 0).show();
if(isChecked){
chk2.setChecked(false); // 이 코드는 체크박스 1개가 선택되면 다른 1개는 해제되게하는 코드입니다.
}
}
});
chk2.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this , buttonView.getText().toString()
+"가 " + (isChecked ? "선택":"해제") +
"되었습니다.", 0).show();
if(isChecked){
chk1.setChecked(false); // 이 코드도 체크박스 1개가 선택되면 다른 1개는 해제되게하는 코드입니다.
}
}
});
}
}





위사진에서 볼수있듯이 버튼을 누르면 아래 토스트가 뜹니다!!







위에는 체크박스를 누를때마다 토스트가뜨는데..

컴퓨터가 너무느려서 체크박스2토스트가 뜨기전에 캡쳐를 했네요..