728x90
반응형
public class LoginRequest extends StringRequest {
// 서버 URL 설정 ( PHP 파일 연동 )
final static private String URL = "IP주소/login.php";
private Map<String, String> map;
public LoginRequest(String userEmail, String userPassword, Response.Listener<String> listener) {
super(Method.POST, URL, listener, null);
map = new HashMap<>();
map.put("userEmail",userEmail);
map.put("userPassword", userPassword);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
다음과같이 LoginRequest파일을 만든다.
● MainActivity 전체코드
// Login 클릭 감지
RelativeLayout_login.setClickable(true);
RelativeLayout_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String userEmail = TextInputEditText_email.getText().toString();
String userPassword = TextInputEditText_password.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
// TODO : 인코딩 문제때문에 한글 DB인 경우 로그인 불가
System.out.println("aaa" + response);
JSONObject jsonObject = new JSONObject(response);
boolean success = jsonObject.getBoolean("success");
if (success) { // 로그인에 성공한 경우
String userEmail = jsonObject.getString("userEmail");
String userPassword = jsonObject.getString("userPassword");
Toast.makeText(getApplicationContext(),"로그인에 성공하였습니다.",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.putExtra("userEmail", userEmail);
intent.putExtra("userPassword", userPassword);
startActivity(intent);
Log.d("Success",userEmail+userPassword);
} else { // 로그인에 실패한 경우
Toast.makeText(getApplicationContext(),"로그인에 실패하였습니다.",Toast.LENGTH_SHORT).show();
Log.d("Failed",userEmail+userPassword);
return;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
LoginRequest loginRequest = new LoginRequest(userEmail, userPassword, responseListener);
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
queue.add(loginRequest);
}
Login버튼 onClick 안에 Response Listener를 만들고
response값이 잘 들어오는지 출력해봤는데 잘 나온다
● MainActivity
JSONObject jsonObject = new JSONObject(response);
boolean success = jsonObject.getBoolean("success");
if (success) { // 로그인에 성공한 경우
String userEmail = jsonObject.getString("userEmail");
String userPassword = jsonObject.getString("userPassword");
Toast.makeText(getApplicationContext(),"로그인에 성공하였습니다.",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.putExtra("userEmail", userEmail);
intent.putExtra("userPassword", userPassword);
startActivity(intent);
성공하면 LoginActiviry로 Email과 Password가 intent로 전송된다.
● LoginActivity
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String userEmail = bundle.getString("userEmail");
String userPassword = bundle.getString("userPassword");
bundle.putString("email",userEmail);
bundle.putString("password",userPassword);
fragment_user.setArguments(bundle);
이 정보는 Fragment에 출력해볼거라
bundle을 사용해 email, password라는 key로 UserFragment에 넘긴다
● UserFragmnet
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_user, container, false);
tv_email = view.findViewById(R.id.tv_email);
tv_password = view.findViewById(R.id.tv_password);
btn_news = view.findViewById(R.id.btn_news);
Bundle bundle = getArguments();
String email = bundle.getString("email");
String password = bundle.getString("password");
tv_email.setText(email);
tv_password.setText(password);
Fragment는 onCreateView안에 작성한다
Activity에서 bundle에서 setArguments했으니
bundle에서 getArguments해서 eamail과 password의 값을 가져오고
textView에 넣어봤다
반응형
'Android' 카테고리의 다른 글
[Android/Java] FrameLayout(+Recycler) & Adapter (0) | 2022.01.26 |
---|---|
[Android/Java] BottomNavigation 클릭시 색상 (0) | 2022.01.25 |
[Android/Java] I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 에러 (0) | 2022.01.24 |
[Android/Java] onResonse 무응답 작동안될때 (0) | 2022.01.21 |
[Android/Java] Mysql, php연결, json형식으로 출력 (0) | 2022.01.21 |