프로그램 안드로이드 스튜디오 (폭스)
데이터를 통신함에 있어서 Volley Library가 필요하다는 것을 깨닫고 현재 코딩을 해보면서 공부중입니다.
현재 "회원가입완료" 버튼을 클릭시 volley와 JSONObject를 사용하여 제가 호스팅중인 홈페이지에 데이터를 업로드 하는 방식을 구현하려 합니다.
앱 실행은 아직 코드가 완성되지 않아 동작여부는 확인하지 못했습니다.
Request문의 동작 구조가 아래와 같다는 것은 이해했습니다.

package unknownPG.Firstwork;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.android.volley.Response;
import org.json.JSONException;
import org.json.JSONObject;
public class Sub_membership_Activity extends AppCompatActivity {
private EditText et_membership_id;
private EditText et_membership_password;
private Button btn_membership_complete;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_membership);
et_membership_id = findViewById(R.id.아이디입력);
et_membership_password = findViewById(R.id.비밀번호입력);
btn_membership_complete = findViewById(R.id.회원가입완료);
btn_membership_complete.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String userID = et_membership_id.getText().toString();
String userPassword = et_membership_password.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
// Response.Listener<String>을 새로 정의 하면서 응답 값을 responseListener로 지정해주려고 하는 것 같다.
@Override
public void onResponse(String response) {
try {
// 질문 . onResponse 인자값 response는 무슨 값을 갖고 있는지 궁금한데 어떻게 확인하는지.
// ex) System.out.println(response); 이클스에서는 중간중간 인자값이 무엇이 들어있는지 확인 할 수 있었지만 안드로이드 스튜디오에서는 어디로 출력되는지 가늠이안된다.
JSONObject jsonObject = new JSONObject(response);
boolean success = jsonObject.getBoolean("success");
if(success){
Toast.makeText(getApplicationContext(),"회원가입이 완료되었습니다.", Toast.LENGTH_SHORT).show();
// getApplicationContext()를 this로 사용하면 안되는 이유
Intent intent = new Intent(Sub_membership_Activity.this , MainActivity.class);
startActivity(intent);
}
else{
Toast.makeText(getApplicationContext(),"로그인에 실패하였습니다.",Toast.LENGTH_SHORT).show();
return;
}
} catch (JSONException e) {
e.printStackTrace();
} }};}});}}
-----------------------------------------------------------------------------------------------------------------------
질문내용 요약.
1) Request의 구조를 보면 Request는 RequestQueue에 추가하고 RequestQueue는 서버에 요청을 한다.서버는 응답 값을 RequestQueue에 보내주며 응답 값을 내포하고 있는 RequestQueue는 응답처리기인 ResponseListener에게 전달해준다.
그런데 어떻게 바로 이 과정을 생략하고 바로
Response.Listener<stiring> responseListener = new ~~ {
~~
}
나오는 건지 궁금합니다.
new Response.Listener<String>(){
~~
} 이 부분이 위의 과정을 모두 포함하고 있어서 그런건가요 ?
2) 중간중간 메소드의 인자값으로 무엇을 받은 건지 궁금해서 알아보고 싶은대 어떻게 해야 될지를 모르겠습니다. 예를 들어 이클립스에서는 System.out.println(인자값) 을 이용하여 무엇을 받았는지 확인 할 수 있었는데 안스는 다른 것 같습니다...
3) 통신 성공시 Toast문을 사용하였는대 인자값에서 getApplicationContext()를 this로 바꾸면 오류가 발생하는 이유가 궁금합니다.
오류내용은 아래와 같습니다.
- no suitable method found for makeText(>,String,int) method Toast.makeText(Context,CharSequence,int) is not applicable (argument mismatch; > cannot be converted to Context) method Toast.makeText(Context,int,int) is not applicable (argument mismatch; > cannot be converted to Context)