Activity and Intent
한개 이상의 Activity를 가지는 어플리케이션
애플리케이션은 여러 개의 Activity들로 이루어진다.
Intent를 이용(명시적(Explicit) / 암시적(Implicit))해서 액티비티 이동
하나의 task는 스택에 있는 activity들로 구성된다.
맨위에 쌓아두고 back을 누르면 이전 activity가 보인다.
<Intent>
- Implicit Intent: 암시적 intent
나는 B로 이동할거야 라는 의도를 intent가 안드로이드 시스템에 전달
안드로이드 시스템이 그것을 받고 intent를 통해 B를 생성하여 화면에 배치
- Explicit Intent : 명시적 intent
정확하게 내가 이동하려는 액티비티를 명시
액티비티 생성
AndroidManifest.xml 파일의 application 안에 <activity android:name = ".ResultActivity"></activity>
AndroidManifest.xml mainactivity에서 intent-filter때문에 mainActivity가 생성되고 실행됨
<intent-filter>
<action android:name = "android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
- 버튼을 눌릴 때 액티비티 이동하기
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//명시적 intent를 사용하여 다른 액티비티 호출
//현재 액티비티 -첫번째 인자, 두번째 - 호출할 인자 class
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
}
});
데이터 전달
1. 전역변수 사용(공유변수 사용)
public static int data ---> int data = MainActivity.data;
2. 메세지 파씽
intent.putExtra() -> 액티비티를 호출할 때 정보를 담아서 던진다.
intent.putExtra("id", 685457);
intent.putExtra("name", "jeongmin");
---> 만약 다른 액티비티가 호출해서 액티비티가 생성되었다면 intent를 받을 수 있다.
Intent intent = getIntent();
int id = intent.getIntExtra("id", -1);
String name = intent.getStringExtra("name");
<mapButton>
private Button mapButton;
mapButton = findViewById(R.id.mapButton)
mapButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW, Uir.prase("geo:35, 125?z=10"));
startActivity(intent);
}
});
myintent
Intent intent = new Intent("myintent");
startActivity(intent);
AndroidManifest.xml mainactivity에서 intent-filter 수정
<intent-filter>
<action android:name = "myintent"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
startActivityForResult(intent);
'study > 앱프로그래밍' 카테고리의 다른 글
[app] thread.txt (0) | 2020.07.25 |
---|---|
[app] android.txt (0) | 2020.07.22 |