안드로이드/이론

안드로이드 Intent 사용하기(3단계)

원원 2019. 5. 2. 22:29



안녕하세요. 오늘은 A화면에서 B화면을 띄우고 B화면에서 A화면으로 돌아갈때 값을 반환하는 방법을 알아보겠습니다.






※ 이번 예제에서 사용할 intent 관련된 함수 (1단계부터 했던 함수는 제외했습니다)

※ A화면이 처음 화면이고 B화면은 A화면에서 띄운 화면입니다.



1. 액티비티를 실행하고 결과값을 받을수있는 requestCode를 받는 함수 (startActivity대신에 사용할 함수)

public void startActivityForResult (Intent intent,int requestCode)

intent :실행시킬 화면변수를 넣음

requestCode : 어떠한 값 (onActivityResult에서 필요함)




2. B화면에서 A화면으로 돌아갈때 줄 값

public final void setResult (int resultCode,Intent data)

resultCode : 어떠한 값(onActivityResult에서 필요함)

data : 보내고싶은 데이터.



3. A->B->A로 됬을때 A화면에서 받은값을 처리하는 함수. override함수다.

protected void onActivityResult (int requestCode,int resultCode,Intent data)

- requestCode : 1번 함수에서 나온 변수

- resultCode : 2번함수에서 나온 함수

- data : 받은 값

여기서 requestCode와 resultCode는 값은 여러가지로 구분해서 처리하기위해 사용함.




- A화면코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class MainActivity extends AppCompatActivity {
    Button btn;
    EditText et;
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
 
        btn = findViewById(R.id.button2);
        et = findViewById(R.id.editText);
        tv = findViewById(R.id.textView4);
 
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this,Main2Activity.class );
                i.putExtra("one",et.getText().toString());
                startActivityForResult(i,1);
            }
        });
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        //super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 1)
            if(resultCode == 2)
                tv.setText(data.getStringExtra("result"));
 
    }
}



-B화면 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Main2Activity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
 
        Button btn;
        TextView tv;
        tv = findViewById(R.id.textView3);
        btn = findViewById(R.id.button);
        Intent intent = getIntent();
        tv.setText(intent.getStringExtra("one"));
 
 
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("result","받아라!");
                setResult(2,intent);
                finish();
            }
        });
 
 
    }
}