[Android] Data transferring Method by using intent
Intent
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: Starting an activity. An Activity represents a single screen in an app.
"인텐트는 메시징 객체입니다. 다른 앱 컴포넌트로부터 액션을 요쳥할 수 있습니다.
예를 들어 Activity를 실행하는데 사용될 수 있고, MainActivity 에서 SecondAcitivity로 값을 전달하기 위해서 Intent를 사용할 수 있습니다."
이 포스트에서 소개할 Intent 데이터 전달 방법은 "Activity 간 데이터를 요청하고 수신 받는 방법입니다."
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: Starting an activity. An Activity represents a single screen in an app.
"인텐트는 메시징 객체입니다. 다른 앱 컴포넌트로부터 액션을 요쳥할 수 있습니다.
예를 들어 Activity를 실행하는데 사용될 수 있고, MainActivity 에서 SecondAcitivity로 값을 전달하기 위해서 Intent를 사용할 수 있습니다."
이 포스트에서 소개할 Intent 데이터 전달 방법은 "Activity 간 데이터를 요청하고 수신 받는 방법입니다."
[MainActivity 에서 값을 전달하는 부분]
@override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // EditText 값을 참조해주겠습니다. SEND(보내기 버튼이 있다고 가정하고) messageText = findView(R.id.editText_main); } // "보내기" 버튼을 클릭했을때 함수입니다. // 기본적으로 Intent를 생성해주었습니다. startactivity()로 값을 보내 SecondActivity 클래스를 가지고 올것이므로 // contenxt, 데이터 전달할 class를 지정해줍니다. // 그리고 이제 실질적으로 데이터를 전달할 String 값을 저장해주는데 이때 getText() 메서드를 이용해 // EditText에 작성되어진 값을 받아오고 그 값을 .toString()값으로 변환하여 getMainEditText에 저장합니다. // 만약 MainActivity -> SecondActivity 값만 전달한다면 즉 다시 리턴 받을 값들이 없다면 // 다시 말해 SecondActivity 쪽에서 다시 MainActivity로 줄 데이터가 없다면 startActivity()를 사용해 데이터를 넘겨주면 되지만 // 앞서 언급했듯 데이터를 송수신 하는 방법에 대해서 작성하고 있으므로 startActivityForResult() 메서드를 사용해줍니다. // 이때 인자를 두개를 받는데 첫번째는 우리가 Intent 객체를 만들어 데이터를 불러올 값을 지정해주고 // 두번째는 MainActivity -> SecondActivity로 요청할 '사용자 지정 코드'를 전달해줍니다. public void sendFunction(View view){ Intent secondActivityIntent = new Intent(this, SecondActivity.class); String getMainEditText = messageText.getText().toString(); secondActivityIntent.putExtra(EXTRA_MESSAGE, getMainEditText); startActivityForResult(secondActivityIntent, TEXT_REQEST); }
[SecondActivity 에서 값을 받는 부분]
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_second); // MainActivity 에서 주는 값을 Intent로 받기 위해서 getIntent를 지정해둡니다. Intent getIntent = getIntent(); // 이제 이 getIntent를 가지고 어떤 값을 가지고 와야 되는지 명시해줍니다. // 이때 Intent를 통해 getStringExtra() 메소드를 통해서 가지고 오는데 // MainActivity.EXTRA_MESSAGE는 우리가 위에서 putEXTRA() 메소드로 전달해줄때 사용했던 // 키 값입니다. 즉 key:value 값으로 되어 있기 때문에 key : EXTRA_MESSAGE value: getMainEditText // 다시 말해 key 값을 통해서 값을 가지고 온다는 의미 입니다. 이때 key 값이 String 타입이기 때문에 getStringExtra()메소드를 사용한겁니다. String getMessage = getIntent.getStringEXtra(MainActivity.EXTRA_MESSAGE): // 그럼 이제 값도 다 받아왔기 때문에 SecondAcitivty 화면에 뿌려줄 차례만 남았습니다. // TextView를 연결해주고 setText()값으로 텍스트를 변경해줍니다. TextView textView = findViewById(R.id.text_view); textView.setText(getMessage); }
[SecondActivity 에서 다른 값을 전달 하는 부분]
replyText = findViewById(R.id.secondEditText); public void returnReply(View view) { // reply 변수에 SecondActitivty에 연결해두었던 replyText에 작성되어진 String 값을 // getText().toString() 값으로 받아와 저장해줍니다. String reply = replyText.getText().toString(); // 이때 MainActivity에서는 안에 context, SecondActivity.class 가 있었는데 왜 없는지 의아하다면 // 우리는 startActivity()를 다시 실행할 필요가 없기 때문이다. // 만약 SecondActivity에서 다른 Activity를 가지고 와야 될 필요가 있다면 MainActivity 에서 했던 것처럼 // 명시해주어야 하겠지만 // 따로 startActivity()를 하지 않아도 stack 상에 이전 MainActivity 가 있기 때문에 다시 호출 하지 않아도 된다. Intent deliverIntent = new Intent(); // 이렇게 deliverIntent 객체를 생성해주고 putExtra 를 사용해서 여기에서 값을 전달해주겠다 라고 알리기 위한 // 사용자 정의를 해주고 값을 넘겨줄 reply 를 작성해준다. // setResult() 를 통해서 RESULT_OK 는 Int 값으로 성공적으로 결과를 반환해주었다 라고 생각하면 된다. deliverIntent.putExtra(EXTRA_REPLY, reply); setResult(RESULT_OK, deliverIntent); finish(); } // 그리고 나서 이제 MainActivity로 가서 onActivityResult() 메소드를 통해서 우리가 // MainActivity에서 지정해주었던 requestConde = TEXT_REQUEST, resultCode = RESULT_OK, // 우리가 SecondActivity에서 보내주었던 Intent data 값을 인자로 갖는다. // 이렇게 요청한 코드와 결과값으로 보낸 코드가 같다면 이게 이해가 안간다면 // 전화를 생각해보면 된다. 우리가 요청한 핸드폰의 주소가 요청코드가 되고 받는 사람 코드가 RESULT_OK가 된다. // 이렇게 조건이 충족한다면 Intent 값을 getStringExtra로 가져오고 해당 Intent 값의 맞는 key 값을 통해서 받아준다. // 그렇게 하고 임의로 설정한 mReplyTextView (TextView) 의 setText()값을 이용해서 Text가 보여지는 부분을 바꿔준다. if(requestCode == TEXT_REQUEST && resultCode == RESULT_OK) { String receiveData = data.getStringExtra(SecondActivity.EXTRA_REPLY) mRelyTextView.setText(recieveData); }
Author And Source
이 문제에 관하여([Android] Data transferring Method by using intent), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@itstime/Android-Data-transferring-Method-by-using-intent저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)