블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
01.C#기초 (4)
02.C#고급 (13)
03.ASP.NET (28)
04.HTML&Script (17)
05.Silverlight (38)
06.C 언어 기초 (2)
07.iOS (14)
08.Java (5)
09.SQL (8)
10.컴퓨터보안 (10)
11.패턴이야기 (3)
12.유니티3D (1)
13.Ubuntu (7)
14.Node.js (6)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



 어떤 개발을 하던 사용자의 이벤트를 받아서 처리하는 것이 대부분 일 것이다. 처음 안드로이드를 공부하는 중인데간단하게 버튼 사용 법에 대해서 샘플 코드를 작성하면서 알아 보겠다.

 
프로젝트를 생성하면 아래 그림과 같이 생길 것 이다



[그림 1 - 샘플 프로젝트 구성 내용]



그럼 activity_main.xml 파일은 View를 처리하는 역할을 하고, MainActivity.javaController의 역활을 한다고 생각하면 된다. 그럼 activity_main.xml에서 간단하게 버튼 하나를 올려보자.



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

 

    <Button

        android:id="@+id/startBtn"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />

 

</LinearLayout>

[코그 1 - activity_main.xml 소스코드]


버튼(Button) 속성은 대충 보면 어떤걸 의미하지는 알 수 있을 것이다. 따로 설명은 하지 않겠다.
주요하게 id를 지정할 때 "@+id/"로 하는 것은 잘 기억해두자. 안드로이드 같은 경우 ‘@’기호로 ID를 찾기 때문에 “@+id/” ID를 추가 한다고 생각하면 될 것이다. 이렇게 정의 하게 되면 이 내용은 R.java파일에 기록이 된다. 그럼 .java파일에서 해당 Object를 찾을 수 있다.



           @Override

           protected void onCreate(Bundle savedInstanceState) {

                     super.onCreate(savedInstanceState);

                     setContentView(R.layout.activity_main);

                    

                     // View 있는 id 버튼 이벤트를 정의합니다.

                     Button startBtn = (Button)findViewById(R.id.startBtn);

                    

                     // OnClickListener를 이용해 버튼 이벤트 처리

                     startBtn.setOnClickListener(new OnClickListener() {

                               

                                @Override

                                public void onClick(View v) {

                                          // Toast 메세지창이 잠깐 나왔다 들어가는 것이다.

                                          // 이는 makeText()함수와 show()함수를 이용해 메세지를 보여줄수 있다.

                                          Toast.makeText(getApplicationContext(), "시작 버튼이 눌렀어요.", Toast.LENGTH_LONG).show();

 

                                }

                     });

                    

           }

[소스 2 – MainActivity.java 소스코드]


[소스 2]View에서 선언한 Button의 인스턴스를 생성한 후 해당 이벤트를 정의하는 코드이다. findViewById 함수를 이용해서 View에서 선언한 Button의 인스턴스를 만든다. 그리고 OnClickListener를 이용해서 버튼의 이벤트를 정의한다.  Toast를 이용해서 잠깐 나타났다 사라지는 메시지창을 이용해서 메시지를 간단하게 띄운다. 위 소스를 쓰다 보면
OnClickListener
Toast를 작성할 때 에러가 날 것이다. 이는 import가 안되서 그러는데 코드를 다 작성한 후 ctrl + Shift + o(영문)를 누루면 자동으로 필요한 내용이 import된다. 위 코드 까지 넣고 실행해 보면, 메시지가 잘 뜨는 것을 볼 수 있을 것이다.

여기서 중요한 것 findViewById함수를 이용해 객체 찾아 인스턴스 생성하기, OnClickListener를 이용해 버튼 이벤트 정의하기 정도가 되겠다.









Posted by happydong
, |



안드로이드 예제를 보면서 공부하고 있는데... 남들 다되는 소스가 내가 하면 안된다. 어떻게 안되느냐 하면, layout에서 @+id/{id}를 다들 지정해 주는데, java파일에 오면 R.id.{id}가 안나오는 것이다. 이상하다 싶어 알아보니, 리소스파일에 대문자로된 파일이 있으면 에러가 나는 것!! 그래서 R.java파일이 갱신이 안되는 것!!!

이걸로 30분 허비했음....;;;;


결론은 그냥 파일 넣을 때 소문자로 넣자!!


Posted by happydong
, |