ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android - Java] 앱에 내용 전송 버튼 만들어서 새로운 페이지에 출력하기 / EditText와 Button, 새로운 Activity 생성과 method와의 연결
    앱 개발/Android Studio 2022. 1. 5. 14:37
    반응형

    1. 자바 파일에서 메서드 작성하기

    android:onClick 속성에 정의한 이름으로 된 메서드는 다음과 같은 조건을 가지고 있다.

    - 접근 지정자는 public 이어야한다

    - 반환값은 void 이어야 한다.

    - 파라미터를 view만 가지고 있어야한다. 

     

    onClick 속성이 정의된  View가 클릭될 때 호출된다.

    버튼을 눌렀을 때 수행할 동작은 이 메서드 내부에 작성하면 된다.

     

    id를 edit_message라고 한 버튼을 눌렀을 때

    sendMessage라는 메서드가 동작하도록 코드를 작성해 보았다.

    MainActivity.java에 작성한 코드는 아래와 같다.

    MainActivity.java 일부

    참고사항으로, xml 파일에서 작성한 내용은 아래와 같다.

    android:onClick에서 sendMessage라는 메서드를 가리키고 있음을 확인하길 바란다.

    xml파일 내 버튼

    public void sendMessage(View view){
            Intent intent = new Intent(this, DisplayMessageActivity.class);
            EditText editText = (EditText) findViewById(R.id.edit_message);
            String message = editText.getText().toString();
            intent.putExtra(EXTRA_MESSAGE, message);
            startActivity(intent);
    
        }

    sendMessage 메서드의 전체 내용은 위와 같으며, 아래는 각 코드를 해석한 내용이다.

     

    Intent intent = new Intent(this, DisplayMessageActivity.class);

    Intent의 생성자 중에서 context와 Class 타입의 두 파라미터를 받는 생성자를 사용하여 Intent 객체를 형성.

    Activity 클래스가 Context를 상속받고 있기 때문에 this를 넘겨도 된다.;

    두 번째 파라미터는 Intent를 통해서 수행할 대상을 지정한다. 위의 코드는  DisplayMessageActivity.class로 하였다.

     

    intent.putExtra(EXTRA_MESSAGE, message);

    putExtra( ) 메서드는 EditText의 값을 인텐트의 추가 정보로 저장한다. 

    인텐트에는 키(Key) - 값(value)의 쌍으로 이루어진 데이터를 추가 정보로 저장할 수 있다.

    여기서 키값은 EXTRA_MESSAGE 상수에 저장해 두었다. 

    이 값은 유일(unique)해야하며, Map 형태로 저장이 된다.

     

     startActivity(intent);

    startActivity( ) 메서드는 엑티비티를 시작하고자 하는 인텐트를 동작하게 한다.

    다른 엑티비티가 화면에 화면에 표시되는 것이다. 

    EXTRA_MESSAGE 상수는 class 내부에 다음과 같이 선언하였다.

    public final static String EXTRA_MESSAGE = "com.example.Application0103.MESSAGE";

     

    반응형

     

    2. 새로운 엑티비티 생성

    엑티비티 파일 형성

    app폴더에서 오른쪽 마우스를 누른 후 New에 Activity, Empty Activity를 선택한다.

    아래와 같은 화면이 뜨면, 위에서 작성하였던 코드 중 

    Intent intent = new Intent(this, DisplayMessageActivity.class);

    위 코드의 DisplayMessageActivity가 가리키는 엑티비티를 형성하기 위해

    아래와 같이 엑티비티 이름을 설정하고 Finish 를 누른다.

    다른 이름으로 설정하고, 자바 파일에서 해당 이름을 적어주어도 된다.

    새로운 엑티비티 생성
    자동 생성된 코드 (DisplayMessageActivity.java)

    안드로이드스튜디오가 자동적으로 위와 같이 기본코드를 작성하였다.

    간단하게 살펴보면 DisplayMessageActivity.java 클래스를 형성했고, onCreate 메서드가 추가되었다. 

    또한, 새로운 레이아웃파일이 형성되었고, 클래스 파일과 연결시켰다.

    추가된 layout 파일

    마지막으로, AndroidMaifest.xml에 <activity> 요소가 추가되었다.

    AndroidMaifest.xml 일부

     

     

    버튼을 누르면 아래와 같이 빈 화면이 출력된다.

    버튼을 누른 후 전환된 페이지

     

     

     

    3. 입력한 내용 화면에 표시하기

    DisplayMessageActivity.java 파일을 아래와 같이 작성한다.

    DisplayMessageActivity.java 일부

    작성 도중에 아래 코드에서 에러가 뜰텐데, id값을 설정해주지 않았기 때문이다.

    activity_display_message

    다음과 같이, activity_display_message.xml 파일에 id를 지정해주면 된다.

    android:id="@+id/activity_display_message"

    DisplayMessageActivity.java의 DisplayMessage 메서드 전체 코드는 아래와 같다.

    public class DisplayMessageActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_message);
    
            Intent intent = getIntent();
            String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
            TextView textView = new TextView(this);
            textView.setTextSize(40);
            textView.setText(message);
    
            ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
            layout.addView(textView);
        }
    }

    위 코드를 각각 자세히 살펴보면 다음과 같다.

     

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    getIntent 메서드를 통해 엑티비티를 실행한 인텐트를 얻는다.

    그리고 getStringExtra를 통해 저장된 데이터의 키를 전달받는다.

    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    TextVeiw를 코드로 작성한다.

    새로운 뷰를 형성한 뒤, 사이즈와 내용을 지정해준다.

    message는 위에서 저장한 데이터라는 것을 알 수 있다.

    ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
    layout.addView(textView);

    activity_display_message id를 찾아서 뷰로 반환해준다.

    그리하여 ViewGroup에 TextView를 추가한다.

     

    내용을 입력한 후 버튼을 눌러보면 페이지가 이동하면서 전송한 내용이 화면에 나온다.

    실행 화면

     

     

     

     

     

     

    참고문헌

    오준석. (2018). 될때까지 안드로이드. 경기 부천: 루비페이퍼

    반응형

    댓글

Designed by Tistory.