1. 인터페이스 정의
- 콜백 함수에 정의할 인터페이스 정의 (네이버 로그인 기준으로 설명)
public interface NaverCallback {
void loginSuccessCallback(String email);
void loginFailCallback(String error);
}
2. 콜백을 받을 클래스에서 사용 (예 : MainActivity)
- 1. 에서 선언한 인터페이스 변수를 생성
- 인자값으로 전달
//콜백 변수 생성
private NaverCallback m_naverCallback = new NaverCallback() {
@Override
public void loginSuccessCallback(String email) {
Log.d("haha","email : " + email);
}
@Override
public void loginFailCallback(String error) {
Log.d("haha","error : " + error);
}
};
......
//함수호출인자값으로 m_naverCallback 전달
public void run(boolean success) {
if(success)
{
NaverLoginNetwork network = new NaverLoginNetwork();
network.SetToken(accessToken,m_naverCallback);
network.execute();
}
};
3. 콜백을 호출할 클래스에서 사용 (예 : Network클래스)
- 2. 에서 넘겨준 인자값을 맴버변수로 등록
- 필요할때 해당 맴버변수의 함수를 호출
//맴버변수 등록
private NaverCallback m_callback;
//2. 에서 전달한 인자값을 맴버변수에 등록
public void SetToken(String token, NaverCallback callback)
{
m_token = token;
m_callback = callback;
}
protected void onPostExecute(String content)
{
try {
JSONObject obj = new JSONObject(content);
JSONObject response = obj.getJSONObject("response");
//콜백변수의 성공시 호출할 콜백 함수 호출
m_callback.loginSuccessCallback(response.getString("email"));
} catch (JSONException e) {
//콜백변수의 실패시 호출할 콜백 함수 호출
m_callback.loginFailCallback(e.getMessage());
e.printStackTrace();
}
}'Android' 카테고리의 다른 글
| Android SNS 로그인 (카카오톡) (0) | 2022.03.24 |
|---|---|
| Android SNS 로그인 (구글) (0) | 2022.03.24 |
| Android SNS 로그인 (네이버) (0) | 2022.03.24 |
| Android SNS 로그인 (Facebook) (0) | 2022.03.24 |
| Entry name 'res/color/material_on_surface_disabled.xml' collided 오류 대처 (0) | 2022.03.24 |