신개자
703
2018-10-15 15:25:18
5
796

안드로이드 새로고침 방법에 대해 질문드립니다


제가 지금 아두이노 + 안드로이드 앱을 블루투스로 연동하고

로그인기능까지 구현하고 있는 단계에 있습니다.

제가 하고싶은건 새로고침입니다.

구글에 검색해 보면 대부분 리스트뷰를 당겨서 새로고침을 하는 방법뿐이더라구요

보통 로그인을 성공하면 원래 있던 홈 액티비티를 닫고 새로운 액티비티를 열으라 하시더라구요

하지만 제 문제는 블루투스를 연결 한 상태에서 새로운 액티비티를 열면

새로운 액티비티에서는 연결이 되어있지 않다고 나오더라구요

그래서 로그인 완료 시 메인 화면을 새로고침해서 로그인버튼만 로그아웃버튼으로 변경하고싶습니다

혹시 방법이 없을까요???

로그인 정보 저장은 

SharedPreferences loginData = getSharedPreferences("loginData", MODE_PRIVATE);

SharedPreferences.Editor editor = loginData.edit();  를 사용하고 있습니다. 

0
  • 답변 5

  • Aaron
    1k
    2018-10-15 15:32:24

    인증을 하고 새로고침한다는 말부터가 무슨 말인지... 그냥 view 업데이트해주면 될 것 같은 데요.

    로그인이 완료되면 로그인 버튼을 그냥 로그아웃 버튼으로 바꾸시면 됩니다...

    원래 있던 홈? 액티비티를 닫고 새로운 액티비티를 열라는 부분이 잘 이해가 안되는데요...

    구체적으로 어떤 방식으로 인증을 하시는지 알 수 있을 까요?

  • 신개자
    703
    2018-10-15 15:59:36 작성 2018-10-15 16:21:00 수정됨

    @Aaron

    죄송해요 제가 설명을 잘 못해서...

    그니깐 메인액티비티-> 로그인화면 -> 로그인 됬을 시 메인액티비티로 이렇게 구현하고있습니다

    메인액티비티에서 블루투스를 연결 하면 블루투스 연결 완료 버튼이 생깁니다

    연결 완료 하고 로그인을 하고 

    Intent myintent = new Intent(LoginActivity.this, MainActivity.class);

     를 사용해서 매인액티비티를 열게 되면 블루투스 연결 완료 버튼이 없어져있습니다.

    그래서 새로운 메인 액티비티를 열지 않고

    로그인 완료 시 로그인 액티비티는 종료하고

    기존에 열려있던 액티비티를 새로고침하고 싶은겁니다!

     

  • Aaron
    1k
    2018-10-15 16:35:55 작성 2018-10-15 16:36:48 수정됨

    네, 이제 대충 이해가 되네요 ㅎㅎ


    LoginActivity로부터 인증 결과를 얻어야 하기 때문에

    startActivityForResult() 를 사용해서 LoginActivity를 열고

    LoginActivity에서 인증 로직을 완료한 후에는 하기와 같이 인증 결과를 담아 종료합니다.

    Intent result = new Intent("인증 성공 실패 여부", "인증 결과"));
    setResult(Activity.RESULT_OK, result);
    finish();
    


    그러면 다시 MainActivity로 돌아갈텐데요.

    MainActivity에 onActivityResult 메서드를 오버라이드해서 구현해놓으시면 

    LoginActivity로부터 결과 값을 받을 수 있습니다.

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // 구현!
    }


    정리하면

    1. LoginActivity에서 인증 결과(성공/실패)를 Activity 종료 시 Intent에 담아 종료 시킵니다.

    2. MainActivity에 onActivityResult 메서드를 구현하여 LoginActivity에서 전달해주는 결과 값에 따라 UI를 그려줍니다.


    관련된 상세 내용은 하기 링크에서 확인하실 수 있습니다.

    https://developer.android.com/training/basics/intents/result?hl=ko

    https://blog.naver.com/yoonhok_524/220908439002

  • 신개자
    703
    2018-10-15 17:27:36

    @Aaron

    정말 천재시네요...

    오늘 하루종일 고생하던건데

    자세하게 설명도 해주시고

    이렇게 한방에 해결해주시다니...

    와 대단하십니다 ㅠㅠ

    진짜 감사합니다!!!!!

    감사합니다x3!!!!


  • Aaron
    1k
    2018-10-15 18:28:13

    도움되었다니 다행이네요.

    한가지 잘못 말씀드린게 있었는데요.

    LoginActivity에서 결과를 반환할 때 default Intent 생성한 뒤 putExtra()를 통해 데이터를 넣으시면 됩니다.

    Intent result = new Intent();
    result.putExtra("인증 결과", "success");
    setResult(Activity.RESULT_OK, result);
    finish();




  • 로그인을 하시면 답변 을 등록할 수 있습니다.