기술 블로그

[안드로이드 복습]3장 뷰와 간단한 인텐트 본문

Android

[안드로이드 복습]3장 뷰와 간단한 인텐트

jaegwan 2018. 11. 17. 10:47
반응형

버튼을 클릭했을 떄 어떤 일을 수행하려면 onClick 속성을 정의해야 한다. 


xml파일에서도 요소(주로Button)의 속성으로 지정할 수 있다. 


1
2
3
4
5
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="sendMessage"//이부분을 쓰면 ide에서 java파일에 온클릭 메소드를 생성 할거냐고 물어본다.
        android:text="@string/button_send" />
cs





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
 
public class MainActivity extends AppCompatActivity {
    public final static String m ="massage";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    public void sendMessage(View view) {//onclick 속성에 정의한 이름으로 된 메서드는 다음과같은 규칙을 따른다,
//1. public이며 ,2. 반환값은 void이고 , 3. 파라미터는 View만 가지고 있어야 한다.
        
Intent intent = new Intent(this,DisplayMessageActiity.class);
//Intent생성사중 context와 class를 받는 생성자를 통해 인텐트 객체를 생성했다.
//context는 안드로이드 내의 만능인데 액티비티가 이것을 상속받아서 this를 썻다. ,
// 두번째 파라미터인class는 intent를 통해 수행할 대상이다.

        EditText editText = findViewById(R.id.edit_message);
        String message = editText.getText().toString(); //gettext로 텍스트를 얻고 이를 Stirng형태로 변환한다.
        intent.putExtra(m,message);
//intent의 putextra메서드는 Edittext의 값을 인텐트의 추가정보로 저장한다. 형태는 키(key)-값(value)
// 여기서 m은 전역으로 선언된 String m이 키이고 값은 editText를 통해 받은 message String값이다.
// 키는 유일해야하며 인텐트의 추가정보는 자바의 맵 형태로 저장된다.
        startActivity(intent);//액티비티를 시작할 의도를 가진 인텐트를 동작하게한다 (여기서는 인텐트의 두번째 파라미터)
    }
}
 
cs




받는쪽 액티비티에서의 동작 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;
 
public class DisplayMessageActiity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message_actiity);
 
        Intent intent=getIntent(); //getIntent메서드는 이 액티비티를 실행한 인텐트를 얻는다.
        String message = intent.getStringExtra(MainActivity.m);//인텐트에 담긴 데이터를 얻기위해 getStringExtra메서드를 사용한다.
 
        TextView textView = new TextView(this);
        textView.setTextSize(40); //xml에서 가능한건 java로도 할 수 있다.
        textView.setText(message); //textview에 setText메서드로 message String을 받는다.
 
        ViewGroup layout = findViewById(R.id.activity_display_message);
        layout.addView(textView);
 
    }
}
cs


반응형
Comments