반응형
첫번째 화면에 있는 데이터를 두번째 화면에 가져와서 써보자.
intent 뜻(구글링): 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 하는 쉐킷.
컴포넌트 : 한개의 화면, 예를 들어 어플리케이션을 켰을 때 그냥 그 딱 하나의 화면.
package tipcalculator.gohool.firstactivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//intent = 앱 컴포넌트(모듈 즉,화면)가 무엇을 할 것인지를 담는 메시지 객체. 화면전환이 가장 쉬운 예
//첫번째 인자 : 현재 액티비티(MainActivity의 정보가 담겨있음)
//두번쨰 인자 : 호출할 컴포넌트(Second)
Intent intent = new Intent(MainActivity.this, Second.class);
//여러 값들을 쓸 수 있다. 첫번째 인자 : 스트링, 두번째 인자 : whatever you want
intent.putExtra("question", "누구세요?");
intent.putExtra("answer", "뚱인데요?");
//전송된 데이터를 실행해준다.
startActivity(intent);
}
});
}
}
package tipcalculator.gohool.firstactivity;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class Second extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//가져오기!
//Bundle은 여러가지의 타입의 값을 저장하는 Map. 즉,아무거나 포장할 수 있는 상자
//다 담아버린다. string int ...등등
Bundle extra = getIntent().getExtras();
textView = (TextView) findViewById(R.id.textView);
if(extra != null){
//각 변수에 담아온 MainActicity의 extra들을 가져옴. 인자: 키값으로
String message = extra.getString("question");
String message1 = extra.getString("answer");
textView.setText(message + message1);
}
}
}
두번째 화면에서 첫번째 화면으로 다시 이동하기(with onactivityresult)
package tipcalculator.gohool.firstactivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private Button button;
private final int REQ_CODE = 7640;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//intent = 앱 컴포넌트(모듈 즉,화면)가 무엇을 할 것인지를 담는 메시지 객체. 화면전환이 가장 쉬운 예
//첫번째 인자 : 현재 액티비티(MainActivity의 정보가 담겨있음)
//두번쨰 인자 : 호출할 컴포넌트(Second)
Intent intent = new Intent(MainActivity.this, Second.class);
//여러 값들을 쓸 수 있다. 첫번째 인자 : 스트링, 두번째 인자 : whatever you want
intent.putExtra("buyMerona", "올때 메로나");
//전송된 데이터를 실행해준다.
//startActivity(intent);
//음.. 갈때 패스워드 외워가서 올때 누르고 들어와~
startActivityForResult(intent,REQ_CODE);
}
});
}
//정말 간단하게 설명하면 Activity A와 B가 있을 때, A에서 B로 갔다가 다시 A로 넘어올 때 사용하는,
// 안드로이드에서 제공하는 기본 메소드입니다.
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQ_CODE){ // 패스워드 주고 보낸 socond가 맞는지 구별
if(resultCode == RESULT_OK){ // socond가 어떤 결과코드를 주었는지
String result = data.getStringExtra("merona");
Toast.makeText(MainActivity.this,result,Toast.LENGTH_LONG).show();
}
}
}
}
package tipcalculator.gohool.firstactivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class Second extends AppCompatActivity {
private TextView textView;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//가져오기!
//Bundle은 여러가지의 타입의 값을 저장하는 Map. 즉,아무거나 포장할 수 있는 상자
//다 담아버린다. string int ...등등
Bundle extra = getIntent().getExtras();
textView = (TextView) findViewById(R.id.textView);
if(extra != null){
//각 변수에 담아온 MainActicity의 extra들을 가져옴. 인자: 키값으로
String message = extra.getString("buyMerona");
textView.setText(message);
}
//1번화면으로 돌아가기위한 코드
btn = (Button) findViewById(R.id.gobackbtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent givedataBack = getIntent(); //돌아갈때 가지고갈 데이터를 만들기위해;
givedataBack.putExtra("merona", "옛다 메로나");
setResult(RESULT_OK, givedataBack); //첫번째인자로, resultcode, 두번째 data로 받는데, RESULT_OK 이세키 안전하니까 보내줘도된다는 뜻
finish();
}
});
}
}
반응형
'개발언어 > JAVA' 카테고리의 다른 글
안드로이드 앱 개발하기(recycler view 사용법) (0) | 2020.12.12 |
---|---|
안드로이드 앱 개발하기(개 고양이 정보 가져오기) (0) | 2020.12.07 |
안드로이드 화면 추가 (0) | 2020.12.03 |
자바 어플 개발(팁 계산기) (0) | 2020.11.18 |
자바 창끄기, alertdialog 만들기 (0) | 2020.11.18 |