Activity, Toast

이도현·2023년 8월 10일
0

Android 공부

목록 보기
4/30

1. Activity Life Cycle 메서드

  • Activity가 생성되서 운영되고, 종료될 때까지 각 상태 변경시 호출되는 콜백 메서드
  • onCreate: Activity가 생성될 때, 최초로 1번만 실행
  • onResume: Activity가 전체화면으로 보일 때 실행된다. onStart 다음으로 실행
  • onStop: Activity가 전체화면으로 보이지 않을 때, 실행된다.
  • onStart: Activity가 전체화면으로 보일 때 실행된다.
  • onDestroy: Activity가 메모리에서 제거될 때 (주로 App이 종료될 때), 실행된다.

2. Intent의 이해

1) Intent객체

  • 사용자의 의도를 안드로이드 시스템에 알리는 용도
  • 컴포넌트 간 정보 전달을 위해 사용

2) android Component

  • 사용자 정의 컴포넌트는 반드시 AndroidManifest.xml에 등록해야함
    • Activities: UI를 가지고 있는 보여지는 Process
    • Services: 백그라운드로 업무를 수행하는 Process
    • Broadcast Receivers: Android OS나 App 간의 정보전송을 수신하는 핸들러 객체
    • Content Providers: Database나 Data를 관리, 제공해주는 객체
    • 각종 매니저: Activity, Alarm, Power, location, Network….

3) 요소별 Intent 전송 방법

  • startActivity()
  • sendBroadCast()
  • startService

4) Intent로 호출된 컴포넌트에서 전달된 Intent 얻기

  • getIntent()

5) Android system이 기본제공하는 Activity 호출

  • 전화걸기
  • 문자보내기
  • 주소록 보기 등
class MainActivity : AppCompatActivity(){
	
	val binding by lazy{ ActivityMainBinding.inflate(layoutInflater)}

	overrride fun setUpUI(){
		binding.btnSMS.setOnClickListener{
			//SMS 보내기
			val uri = Uri.parse("smsto:" + "01011112222")
			val intent = Intent(Intent.ACTION_SENDTO, uri)
			intent.putExtri("sms_body", "여기가 문자!!")
			startActivity(intent)
		}

		vinding.btnInternet.setOnClickListener{ //인터넷 이동
			//val intent = INtent(Intent.ACITON_DIAL, Uri.parse("tel:" + 114))
			//startActivity(intent)
			val uri = Url.parse("http://vingageappmaker.tumblr.com/")
			val intent = Intent(Intent.ACTION_VIEW, uri)
			startActivity(intent)
		}
		
		binding.btnMap.setOnClickListener{ // 지도이동
			val uri = Uri.parse("geo: 37.5310091, 127.0261659")
			val intent = Intent(Intent.ACTION_VIEW, uri)
			startActivity(intent)
		}
		
		binding.btnMarket.setOnClickListener{ // 마켓으로 이동하기
			val uri = Uri.parse("makret://details?id=com.psw.moringcall")
			val intent = Intent(Intent.ACTION_VIEW, uri)
			startActivity(intent)
		}
	}
}

3. Acitivty 추가 & 호출

1) 새로운 Activity 추가

  • 패키지 >> New > Activity > Empty Activity
<!-- AndroidManifest.xml -->

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.basic_3_addactivity">

	<application
		android:allowBackup="true"
		android:icon="@mipmap/ic_launcher"
		android:label="@string/app_name"
		android:roundIcon="@mipmap/ic_launcher_round"
		android:supportsRtl="true"
		android:theme="@style/AppTheme">
	
		<activity android:name=".Main2Activity"></activity>
		<activity android:name=".MainActivity">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
	
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

	</application>
</manifest>

2) Activity 호출

  • Intent 객체
    • Activity 호출에 사용
      • 어떤 액티비에서 어떤 액티비티를 호출한다는 정보를 표현
      • Intent(호출하는 액티비티 참조, 호출할 액티비티 클래스 정보)
    • startActivity()를 이용해 시스템에 전달
<!-- res.layout.activity_main.xml 에 추가 -->

<Button
android:id="@+id/btnOk"
android:text="Activity 호출"
android:layout_width="wrap_content"
android:layout_height="wrap_content"  />

<TextView
android:textSize="30sp"
android:textColor="#FF0000"
android:text="추가된 Activity"/>
// MainActivity.kt

class MainActivity : AppCompatActivity() {
	val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

	override fun onCreate(savedInstanceState: Bundle?) {
		super.onCreate(savedInstanceState)
		setContentView(binding.root)
		binding.btnOk.setOnClickListener {
			val i = Intent(this, Main2Activity::class.java)
			startActivity(i)
		}
	}
}

class

4. 다른 Activity에 값 전달

5. Toast

  • 사용자에게 간단한 문자열을 짧은 시간 동안 보여줌
  • 사용자가 못 보고 놓칠 수 있음
  • Toast.makeText(Context, string, duration).show()
    • duration
      • Toast.Length_LONG
      • Toast.Length_SHORT

1) 사용자 정의 Toast

  • layout xml을 정의
  • layout xml을 코드로 객체화(inflate)
profile
좋은 지식 나누어요

0개의 댓글