brunch

You can make anything
by writing

C.S.Lewis

by 윤형도 Mar 08. 2016

빠르게 배우는 안드로이드 -5 ClickEvent-2

ClickEvent-2 javaCode



위 강의에 이어서 진행합니다.

이제 화면 배치에 대한 준비는 끝났습니다.

그렇다면 화면에 배치된 위젯대로 저희 할일은

클릭을 하면 우리가 쓴 텍스트가 맨위에 보이게하는 기능을 구현해 볼것입니다.

이말을 앞서 배운 위젯과 연결하여 다시 말하면

Button을 클릭하면 EditText에 있는 text를 TextView에 입력해서 보여주어라 라고 다시 말할수있습니다.

이 부분은 자바 코드 부분을 수정하여야합니다.    

왼쪽 부분 프로젝트에

java -> com.자신의 패키지->MainActivity가 들어가있습니다

MainActivitiy를 더블클릭하면    

다음과 같은 자바 코드화면이 나오는 것을 확인 할 수 있습니다.

이 부분을 살펴보면 MainActivity는 우리가 보는 화면을 나타내는 클래스이고 이 Activity클래스에 수정을 통해서 우리는 전 강의에서 구성했던 xml을 가지고와서 화면에 보여주고 이벤트를 등록할수 있습니다.

기본적으로 onCreate함수가 Override되어있는것을 볼수있는데요 이 부분은 시작후 Activity가 생성될때 호출되어지는 부분으로 현재 코드에
이부분에 xml(레이아웃)을 호출하여 화면에 보여주라는 setContentView메소드가 사용되었고 setContentView(R.layout.activity_main) 이러한 형태로
파라미터로 아까 만든 layout을 호출한것을 확인할수 있습니다.
이렇게 하면 우리가 만든 xml을 호출하는 부분을 다된것입니다.

그렇다면 이제 아까 레이아웃에 붙인 Button, TextView,EditText가 있는데 이를 자바코드에 등록하여 사용해보도록 합시다.
activity에서는 findViewById()라는 함수를 제공합니다. 이 함수는 레이아웃에 등록된 위젯들에 우리가 id를 등록했었는데 이 id를 파라미터로 넘겨주면 해당 객체를 반환하는 일을합니다. 즉 이 함수로 여러분이 등록한 위젯들을 제어할수 있게 도와주는 함수인것입니다.

현재 oncreate가 위와같이 코딩되어있는데.
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
}

우선 이 메소드 위에 멤버변수로 Button과 TextView, EditText를 선언합니다.    

다음과 같이 입력하면

Button과 TextView와 EditText부분이 빨간색으로 표시됨을 볼수있습니다. 이 부분은 아직 해당 클래스를 import하지 못했다는 의미입니다. 따라서 각 위젯을 import해주어야합니다.

Button글자를 한번클릭하고 조금 기다리면    

다음과 같이 이 클래스가 해당 패키지가 맞는지를 자동으로 묻는 알림이 나옵니다. 이때 여기서 alt_enter를 누르게되면 빨간색이 없어지고 해당 패키지가 import됩니다.    

나머지것들도 다음과 같은 방법으로 진행할수도 있으며 
알림이 만약 나오지않는다면 Button 글자에 커서를 이동해서(클릭) alt+Enter를 누릅니다. 그러면 다음과 같은 메뉴가 나옵니다.    

여기서 Import class를 누르시면 패키지가 import 되게 됩니다.

이제 위젯들도 import했으니 layout에있는 위젯들과 이어주는 작업을해야합니다.

onCreate 메소드 안의

setContentView 메소드 밑에 다음과 같은 코드를 추가합니다.

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

click_btn = (Button)findViewById(R.id.click_Btn);
 display_textView = (TextView)findViewById(R.id.display_textview);
 input_editText = (EditText)findViewById(R.id.input_editText);
}

findViewBydId()는 리턴값으로 View객체를 리턴하게 되는데
모든 화면에 보이는 위젯들은 View객체를 상속 받아서 만들어진 클래스입니다. 따라서 findViewById 메소드 하나로 모든 위젯객체들을 캐스팅하여 연결할수있습니다.

이제 드디어 이벤트를 발생시켜볼 시간입니다.

View.OnClickListener mClickListener = new View.OnClickListener();

OnCreate 함수 밑에 위와같이 선언해줍니다.

public class MainActivity extends AppCompatActivity {
    Button click_btn;
    TextView display_textView;
    EditText input_editText;


    @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        click_btn = (Button)findViewById(R.id.click_Btn);
        display_textView = (TextView)findViewById(R.id.display_textview);
        input_editText = (EditText)findViewById(R.id.input_editText);

   }
/* 이부분*/

View.OnClickListener mClickListener = new View.OnClickListener();
}

new View.OnClickListener(/*이부분*/) 괄호안에 마우스를 클릭하고
alt+Enter를 누릅니다.    

다음과 같은 화면이 나오는데 메뉴 맨위의 Implement methods를 클릭합니다.

View.OnClickListener mClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        
    }
};

다음과같이 onClick 이벤트가 추가되는것을 볼수있습니다. 이제 클릭 이벤트를 만들었으므로 버튼에 이 클릭이벤트를 추가해 보도록합시다.

public class MainActivity extends AppCompatActivity {
    Button click_btn;
    TextView display_textView;
    EditText input_editText;



    @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    click_btn = (Button)findViewById(R.id.click_Btn);
    display_textView = (TextView)findViewById(R.id.display_textview);
    input_editText = (EditText)findViewById(R.id.input_editText);
     
     /*이부분*/

    click_btn.setOnClickListener(mClickListener);

     /*이부분*/
}
View.OnClickListener mClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
};
}

click_btn.setOnClickListener(mClickListener);를 등록을 통해서 버튼 이벤트를 등록 할 수 있습니다.

버튼을 클릭하면 input_editText에서 타이핑한 Text를 display_textview에 추가하도록 기능을 추가하여봅시다.

안드로이드는 자바를 기반으로 하고있기때문에 대부분의 api(메소드)가 저장할때는 set 가져올때는 get 이러한 패턴으로 되어있습니다.
따라서 input_editText에서 입력한 text를 가져오려면 input_editText.getText();를 하면 가져와지고
display_textview.setText(“입력할 String”)을 입력하면 입력을 처리할수있습니다. 그러면 이 두가지를 조합하여 입력을 해봅시다.

display_textView.setText(input_editText.getText().toString()); 다음 과 같이하면 우리가 원하는 기능이 나옵니다.

이제 onClick 안에 이 기능을 추가하여봅시다.

View.OnClickListener mClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       

         
                display_textView.setText(input_editText.getText().toString());
           
        

    }
};

위 런 버튼을 누르면 연결된 에뮬레이터(or Genymotion)에 화면이 뜨고 버튼을 클릭했을때 우리가 원하는 이벤트가 나오는것을 확인할수 있습니다.    

결과 화면

방금과 같은 과정을 통해서 버튼 클릭이벤트를 생성할수있습니다.

매거진의 이전글 빠르게 배우는 안드로이드-4 ClickEvent -1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari