https://www.youtube.com/watch?v=EKCQ6sxMWNo&list=PLC51MBz7PMyyyR2l4gGBMFMMUfYmBkZxm&index=4
Intent란?
특정 작업을 요청할 때 사용할 수 있는 메시징 개체 를 의미합니다.
「열려 있는 화면에 대해서 다른 화면을 열어 주세요」라고 앱에 메세지로서 전하는 것으로, 다른 화면을 열 수 있습니다.
Activity 시작
간단히 Activity에 대해 설명하면 Activity는 앱에서 하나의 화면을 나타냅니다. Activity가 있는 것으로 유저는 화면을 이용해, 뭔가의 버튼을 누를 수 있거나, 처리를 실시할 수 있는 것입니다.
MainActivity.java
public class MainActivity extends AppCompatActivity {
private Button btn_move;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_move = findViewById(R.id.btn_move);
btn_move.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
}
});
}
}
onCreate클래스는 어플리케이션을 실행하였을 때 바로 화면을 보여주는 클래스입니다.
super.onCreate(savedInstanceState);와 setContentView는 프로젝트 오픈시 바로 적혀있기 때문에 우선 무시하도록 하겠습니다.
상기의 코드에서 Intent는 이 부분에 해당하는데요.
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
MainActivity.this는 MainActivity를 지정하고, Intent에는 "MainActivity에서 SampleActivity 열기" 라는 의미를 담게 됩니다.
그런 다음 startActivity라는 함수에 intent를 전달하여 처리를 수행합니다.
findViewById
findViewById 메소드는 id값을 이용해 특정 뷰를 받아와주는 메소드로, 액티비티, 프래그먼트, 뷰홀더 등에서 다양하게 사용이 된다.
MainActivity.java
btn_move = findViewById(R.id.btn_move);
btn_move.setOnClickListener(new View.OnClickListener() {...}
여기서는 btn_move 로 findViewById를 해서 리소스의 id인 btn_move를 가져온다.
xml파일을 살펴보자
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
<Button
android:id="@+id/btn_move"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이동"/>
...
/>
Button을 작성하였고, 버튼에는 id와 크기, text로 "이동"을 입력하였다.
여기서 확인할 것은 방금 MainActivity.java의 변수 btn_move를 사용하고 서로 연결하였다.
MainActivity.java에서는 지역변수를 btn_move로 줬을 뿐 이지만,
findViewById(R.id.btn_move);
findViewById를 해줌으로써 btn_move로 지정된 id를 가져옴으로써
서로 연결 된 것을 알 수 있다.
심화
Main Text를 sub 에 표시하기
MainActivity.java
private EditText et_test;
private Button btn_move;
private String str;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_test = findViewById(R.id.et_test);
btn_move = findViewById(R.id.btn_move);
btn_move.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
str = et_test.getText().toString();
Intent intent = new Intent(MainActivity.this, SubActivity.class);
intent.putExtra("str",str);
startActivity(intent);
}
}
Activity_Main.xml에는 입력란과 이동 버튼이 있습니다.
입력란에 글자를 입력하고 이동버튼을 누르게 되면 그 글자들이 Sub 화면에 표시하는 기능을 해보겠습니다.
et_test : 입력란의 id를 받아옵니다.
btn_move : 이동 버튼의 id를 받아옵니다.
코드가 추가된 부분은
str = et_test.getText().toString();
intent.putExtra("str",str);
이 두 부분 입니다. str변수에 et_test의 입력란에 입력된 값을 getText()를 해서 가져오고 이것을 String으로 바꿔주기 위한
toString()메서드를 이용합니다.
intent.putExtra를 이용해서 str을 넘겨줍니다.
SubActivity.java
public class SubActivity extends AppCompatActivity {
private TextView tv_sub;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
tv_sub = findViewById(R.id.tv_sub);
Intent intent = getIntent();
String str = intent.getStringExtra("str");
tv_sub.setText(str);
}
}
tv_sub은 Sub화면의 변수입니다. findViewById를 해서 id를 가져오고 설정을 해줍니다.
Intent를 정의하는데 getIntent(); 메서드를 사용합니다.
getIntent()는 Intent로 값이 넘어오는 것을 받습니다.
intent.putExtra("str"); 해서 넘어온 값을 이번엔 SubActivity에서
intent.getStringExtra("str"); 로 값을 str 변수에 넣어줍니다.
이것을 tv_sub의 표시해주는 란에 setText를 이용해서 값을 표시해줍니다.
'개발 > 안드로이드 어플' 카테고리의 다른 글
| ⑥안드로이드어플개발 - Logcat 디버깅하는 방법 log출력|debug (0) | 2022.11.29 |
|---|---|
| ⑤안드로이드어플개발 - viewPager (0) | 2022.11.28 |
| ④안드로이드어플개발 - WebView (0) | 2022.11.27 |
| ③안드로이드어플개발 - ImageView 와 Toast (Drawable과 mipmap) (0) | 2022.11.27 |
| ②안드로이드어플개발 - ListView 와 ArrayAdapter (0) | 2022.11.25 |
댓글