본문 바로가기
개발/Android

안드로이드 스튜디오 액티비티 이동, 값 넘기기, 클릭 이벤트

by 윤호 2019. 11. 25.

이번에는 이렇게 만들었던 화면에서 Login을 누르면 LoginResultActivity로 이동하고 email과 password값을 전달 받도록 해보겠습니다.

 

로그인 화면이 MainActivity이고 그 레이아웃 파일이 activity_main.xml 로그인 눌렀을 때 이동되는 화면이 LoginResultActivity이고 그 레이아웃 파일이 activity_login_result.xml입니다.

LoginResultActivity와 activity_login_result.xml은 이번에 새로 만들 파일입니다.

 

먼저 activity_main에서 두 텍스트창과 로그인 버튼에 id를 부여해줍니다.

 

android:id="@+id/TextInputEditText_email"

android:id="@+id/TextInputEditText_password"

android:id="@+id/RelativeLayout_login"

 

각각의 태그안에 입력해주면 id가 부여됩니다.

 

다음은 MainActivity로 가서 다음 코드를 넣어줍시다.

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
public class MainActivity extends AppCompatActivity {
 
    TextInputEditText TextInputEditText_email, TextInputEditText_password;
    RelativeLayout RelativeLayout_login;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //activity 매칭
 
        //1. 값을 가져온다
        //2. 클릭을 감지한다
        //3. 1번의 값을 액티비티로 넘긴다
 
        TextInputEditText_email = findViewById(R.id.TextInputEditText_email); //activity_main에서 해당 id를 가져옴
        TextInputEditText_password = findViewById(R.id.TextInputEditText_password);
        RelativeLayout_login = findViewById(R.id.RelativeLayout_login);
 
        RelativeLayout_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {    //클릭시
                String email = TextInputEditText_email.getText().toString();        //text값을 String으로 변환하여 가져오기
                String password = TextInputEditText_password.getText().toString();  //getText가 Editable로 가져오기 때문에
                                                                                    //String으로 변환해준다
                //LoginResultActivity로 값을 전달하고 이동하기 위한 작업
                Intent intent = new Intent(MainActivity.this, LoginResultActivity.class);
                intent.putExtra("email", email);    //값 전달
                intent.putExtra("password", password); //값 전달
                startActivity(intent);  //다음 activity로 넘어가기
            }
        });
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

TextInputEditText 등에서 빨간줄 나면 import 해줍시다.

필요한 설명들은 주석으로 모두 써놨습니다.

 

다음으로 activity_login_result.xml을 생성하고 간단하게 TextView만 넣어 줍시다.

1
2
3
4
5
6
7
8
<TextView
        android:id="@+id/TextView_get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:textSize="30sp"
        android:layout_weight="3"
        />
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

핵심은 여기에도 id를 부여하는 것이겠죠

 

그럼 마지막으로 LoginResultActivity를 생성하고 다음 코드를 작성해줍시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class LoginResultActivity extends AppCompatActivity {
 
    TextView TextView_get;
 
    //main(String[] args)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_result); //activity 매칭
 
        TextView_get = findViewById(R.id.TextView_get);
 
        Intent intent = getIntent();
 
        Bundle bundle = intent.getExtras(); //Extra들을 가져옴
        String email = bundle.getString("email");   //가져온 Extars 중에서 꺼내기
        String password = bundle.getString("password");
 
        TextView_get.setText(email + "/" + password);
 
 
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

값을 가져올때는 bundle로 모든 extra들을 가져와서 그 bundle에서 값을 꺼내 넣어주는 식으로 가져옵니다.

 

 

드디어 완성하고 실행해서 Login버튼을 눌러주면

앱이 성공적으로 종료됩니다.

????????

 

이 문제는 우리가 Activity파일을 만든다고해서 앱에서 이 파일을 Activity로 생각하진 않기 때문에 발생합니다.

AndroidManifest.xml에서 이러한 Activity를 설정해줍니다.

AndroidManifest.xml에 위와같은 코드를 입력해주면 해결

 

잘 작동되는 모습

 

 

틀린 부분 지적해주시면 감사하겠습니다.

이 글은 유튜브 센치한 개발자님의 안드로이드 스튜디오 기초강의를 공부한 내용입니다.

https://youtu.be/epFRtZ17yow

댓글