728x90
StartAcrivityForResult가 무엇이냐?
일반적으로 activiriy를 띄울때는 startActivity를 사용한다고 함.
다른방법이 startActivityforresult
1. 용도 차이
startActivity : 새 액티비티를 열어줌 (단방향)
startActivityForResult : 새 액티비티를 열어줌 + 결과값 전달 (쌍방향)
즉, 결과값을 전달해주느냐 아니냐의 차이다.
Activity에서 resultCode를 보내서 원하는 기능을 수행할 수 있다.
더 자세한내용:: https://jhshjs.tistory.com/49 [독학하는 1인 개발자]
Main.java
package com.example.comebackexample;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
private TextView tv_comeback;
private Button btn_go;
//상수의변수값을 대문자로 선언했음, 상수(항상같은수)
private static final int REQUEST_CODE = 219;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_comeback = findViewById(R.id.tv_comeback);
btn_go = findViewById(R.id.btn_go);
btn_go.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),SubActivity.class);
startActivityForResult(intent,REQUEST_CODE); // 오늘배우는거~!
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
Toast.makeText(getApplicationContext(),"수신 성공",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"수신 실패",Toast.LENGTH_SHORT).show();
}
if(requestCode == REQUEST_CODE){
String resultTxt = data.getStringExtra("comeback");//값 전달받기
tv_comeback.setText(resultTxt); //가져온값을 tvcomeback에 입력해줌
}
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_comeback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="값을 가져와주세요"/>
<Button
android:id="@+id/btn_go"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go"
/>
</LinearLayout>
SUBACTIVITY.JS
package com.example.comebackexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SubActivity extends AppCompatActivity {
private Button btn_close;
private EditText et_comeback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
et_comeback = findViewById(R.id.et_comeback);
btn_close = findViewById(R.id.btn_close);
btn_close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("comeback",et_comeback.getText().toString()); //edittext에서입력한값을 가지고 main액티비티로 감 이 스트링값만 맞춰주면됨.
setResult(RESULT_OK,intent); //main에서 보낸 요청에대한 돌려주는 결과값 설정
finish(); //현재 액티비티 종료.
}
});
}
}
sub.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SubActivity">
<EditText
android:id="@+id/et_comeback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="main으로 보낼 값 입력해주세요" />
<Button
android:id="@+id/btn_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="종료"/>
</LinearLayout>
결과:
또~자꾸 usb도 연결이안되고;;avd도안됨 미칠듯
728x90
'✍2021,2022 > app(android studio)' 카테고리의 다른 글
앱만들기.27(LinearLayout) (0) | 2021.08.02 |
---|---|
앱만들기.26(Selector) (0) | 2021.07.30 |
앱만들기.24(인스타 하단바 bottom navigation view) (0) | 2021.07.29 |
앱만들기.23(google map) (0) | 2021.07.21 |
앱만들기.22(뒤로가기 두번눌러 앱종료) (0) | 2021.07.21 |