안드로이드 기초
안드로이드에서 자주 사용하는 intent에 대해 알아보자!
안드로이드의 기초 지식이 궁금하다면
2020/09/07 - [대외 활동/CADI(개발A 보충스터디)] - Android 시작 및 기초 다지기!(Button,Toast,ImageView)
Android 시작 및 기초 다지기!(Button,Toast,ImageView)
Android 시작 및 기초 다지기 안드로이드 앱 개발을 하고 싶다면 Android Studio부터 설치 해야 한다. 2020/08/25 - [대외 활동/CADI(개발A 보충스터디)] - 안드로이드 스튜디오 설치 안드로이드 스튜디오 설�
dev-seungwon.tistory.com
인텐트(intent)
인텐트(intent)란 메시징 객체이며 다른 앱으로 부터 작업을 요청할 때 자주 사용된다. 대표적으로 액티비티 간 화면 전환이나 특정 사이트로 링크를 줄 떄 혹은 key값을 받아 그 값을 주고 받을 때 주로 사용한다.
Intent intent = new Intent();
-괄호 안에 출발지와 도착지를 기술한다
-각각 클래스 명을 기술하면 된다.
startActivity()
- 괄호 안에 자신이 선언한 인텐트 객체를 넣는다.
finish()
-해당 인텐트가 전달되거나 요청이 이루어진 이후 종료한다.(데이터 낭비 방지 혹은 화면 종료도 가능)
btn_intent라는 버튼을 눌렀을 때 intent를 통해 SecondActivity로 화면 전환을 하는 코드다.

이러한 형태로 Activity간 화면 전환이 이루어진다.
인텐트 활용!
인텐트를 활용하기 위해 MainActivity에서 총 3가지의 버튼을 만든다.
1.LayoutActivity로 전환하는 버튼
2.계산(add)하는 화면으로 전환하는 버튼
3. 링크를 통해 특정 사이트로 접속하는 버튼
MainActivity

LayoutActivity에서는 총 4개의 텍스트 뷰로 나에 대한 간단한 설명이 나오는 화면이다.
LayoutActivity

다시 MainActivity로 가서 링크를 누르게 되면 이렇게 사이트 접속이 가능하다.

MainActivity의 link버튼에 관련 코드

계산기를 누르게 되면 값을 더하는 View들이 있고 GOTO를 누르게 되면 다시 LayoutActivity으로 가게 된다.
이는 MainAcitvity에서만 intent로 화면전환을 하는 것이 아니라 다른 액티비티에서도 가능하다는 점을 보여준다.
그렇기 때문에 GOTO버튼을 누르면 Toast메세지가 나오게 하였다.
SecondActivity

LayoutActivity에 Toast메세지 출력

ADD버튼을 눌렀을때 계산기 동작

java코드
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_layout =(Button)findViewById(R.id.btn_layout);
Button btn_intent = (Button)findViewById(R.id.btn_intent);
Button btn_link = (Button)findViewById(R.id.btn_link);
btn_link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.naver.com")));
}
});
btn_intent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this,SecondActivity.class));
finish();
}
});
btn_layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this,LayoutActivity.class));
}
});
}
}
계산기 관련 코드(SecondActivity)
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
final EditText et_num1 = (EditText)findViewById(R.id.et_num1);
final EditText et_num2 = (EditText)findViewById(R.id.et_num2);
Button add = (Button) findViewById(R.id.btn_add);
final TextView tv = (TextView) findViewById(R.id.tv_result);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String num1= et_num1.getText().toString();
String num2= et_num2.getText().toString();
int num_1 =Integer.parseInt(num1);
int num_2 =Integer.parseInt(num2);
tv.setText(num_1+num_2+""); //setText는 string Type
}
});
Button btn_goto =(Button)findViewById(R.id.btn_goto);
btn_goto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(SecondActivity.this,LayoutActivity.class);
i.putExtra("key","hi");
startActivity(i);
finish();
}
});
}
}
LayoutActivity
public class LayoutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
Intent j = getIntent();
String test = j.getStringExtra("key");
if(test != null)
Toast.makeText(getApplicationContext(),test,Toast.LENGTH_LONG).show();
}
}
의문점
코드를 짜면서 SecondActivity의 GOTO버튼을 누를경우에만 Toast메세지를 띄우게 설정해놨는데 처음 MainActivity에서
Layout을 누르면 Toast 메세지가 버그가 걸린 것처럼 메세지 없이 뜬다.
해결
LayoutActivity에서 if(test != null) 을 넣어서 만약 SecondActivity에서 해당 인텐트를 받지 않는다면 Toast메세지가 뜨지않게 설정해 두었다. 그렇게 한다면 메인 엑티비티에서 바로 Layout버튼을 눌러도 토스트 메세지 버그 현상이 이러나지 않는다!!
참조
developer.android.com/guide/components/intents-filters?hl=ko
인텐트 및 인텐트 필터 | Android 개발자 | Android Developers
An Intent is a messaging object you can use to request an action from another app component . Although intents facilitate communication between components in several ways, there are three fundamental use cases: An Activity represents a single screen in…
developer.android.com
'대외 활동 > CADI(개발A 보충스터디)' 카테고리의 다른 글
빌더 패턴(Builder Pattern)이란 ? (0) | 2020.09.22 |
---|---|
java 접근 제어자(private,protected,default,public) (0) | 2020.09.14 |
Git Bash 설치 및 Git 주요 명령어 정리 (0) | 2020.09.08 |
자기소개 앱 만들기! (0) | 2020.09.08 |
Android 6.0 버전 이후 달라진 접근 권한 (0) | 2020.09.07 |