1

비공개 채팅 대화 상자를 만드는 중입니다. 나는 다음 내 로그 캣입니다 내가 Roid 비공개 채팅 문제

public class ChattingFragment extends Fragment { 
    public static final String APP_ID = "*****"; 
    public static final String AUTH_KEY = "********"; 
    public static final String AUTH_SECRET = "*********"; 
    public static final String ACCOUNT_KEY = "*************"; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_chatting, container, false); 

     QBSettings.getInstance().init(getActivity(), APP_ID, AUTH_KEY, AUTH_SECRET); 
     QBSettings.getInstance().setAccountKey(ACCOUNT_KEY); 


       loginForQuickBlox(); 

     QBAuth.createSession(new QBEntityCallback<QBSession>() { 

      @Override 
      public void onSuccess(QBSession session, Bundle params) { 
            Toast.makeText(getActivity(), "Sucess session", Toast.LENGTH_LONG).show(); 
       } 

      @Override 
      public void onError(QBResponseException errors) { 
       Toast.makeText(getActivity(), "error session" + errors.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }); 


     return rootView; 
    } 

    private boolean loginForQuickBlox() { 
     final QBUser user = new QBUser(); 
     user.setEmail("[email protected]"); 
     user.setPassword("123456789"); 

     QBUsers.signIn(user, new QBEntityCallback<QBUser>() { 
      @Override 
      public void onSuccess(QBUser users, Bundle params) { 
       Toast.makeText(getActivity(), "Sucess login" + users.getId(), Toast.LENGTH_LONG).show(); 

       /**here i have to create static dialog for chat with id 19 **/ 
       QBChatService chatService = QBChatService.getInstance(); 
       QBPrivateChatManager privateChatManager = chatService.getPrivateChatManager(); 
       privateChatManager.createDialog(19, new QBEntityCallbackImpl<QBDialog>() { 
        @Override 
        public void onSuccess(QBDialog dialog, Bundle args) { 

        } 


       }); 

      } 

      @Override 
      public void onError(QBResponseException errors) { 

       Toast.makeText(getActivity(), errors.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }); 

     return true; 
    } 
} 

PrivateChatManager

에 널 객체 참조를 얻고 ID (19)에 대한

정적 개인 채팅 대화 상자를 만들려고하고 있습니다.

AndroidRuntime: FATAL EXCEPTION: main 
Process: com.archi.intrisfeed, PID: 24211 
java.lang.NullPointerException: Attempt to invoke virtual method 'com.quickblox.core.QBRequestCanceler com.quickblox.chat.QBPrivateChatManager.createDialog(int, com.quickblox.core.QBEntityCallback)' on a null object reference 
    at com.archi.intrisfeed.fragment.ChattingFragment$3.onSuccess(ChattingFragment.java:102) 
    at com.archi.intrisfeed.fragment.ChattingFragment$3.onSuccess(ChattingFragment.java:96) 
    at com.quickblox.core.Query.notifySuccess(Query.java:372) 
    at com.quickblox.core.Query$VersionEntityCallback.completedWithResponse(Query.java:404) 
    at com.quickblox.core.Query.completedWithResponse(Query.java:277) 
    at com.quickblox.core.server.HttpRequestRunnable$1.handleMessage(HttpRequestRunnable.java:42) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
10-18 12:55:54.181 1224-1224/? E/libEGL: called unimplemented OpenGL ES API 
+0

먼저 사용자를 로그인해야 세션 성공 후 세션을 만들어야합니다. –

+0

사실 여기에 내 코드가 있습니다. 제발 날 안내해 줘. https://codeshare.io/oHPs0 –

+1

코드 링크를 제공하지 마십시오. 질문에 [mcve]를 게시해야합니다. 그런 다음 앱이 NullPointerException으로 인해 충돌하는 경우 logcat –

답변

0

사용자 세부에서 quickblox와 세션을 생성 시도하고 채팅 사용자 로그인 :

submit.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     uNameStr = emailEdt.getText().toString(); 
     uPwdStr = passwordEdt.getText().toString(); 
     final QBUser user = new QBUser(); 
     user.setEmail(uNameStr); 
     user.setPassword(uPwdStr); 
     createSession(user); 
    } 
}); 

세션 생성 :

private void createSession(final QBUser user){ 
     QBAuth.createSession(user,new QBEntityCallback<QBSession>() { 
      @Override 
      public void onSuccess(QBSession result, Bundle params) { 
       user.setId(result.getUserId()); 
       loginForQuickBlox(user); 
      } 

      @Override 
      public void onError(QBResponseException e) { 
       e.printStackTrace(); 
       createSession(user); 
      } 
     }); 
} 

로그인 사용자 :

private boolean loginForQuickBlox(QBUser user) { 
     QBUsers.signIn(user, new QBEntityCallback<QBUser>() { 
      @Override 
      public void onSuccess(QBUser users, Bundle params) { 
       Toast.makeText(getActivity(), "Sucess login" + users.getId(), Toast.LENGTH_LONG).show(); 
       QBChatService chatService = QBChatService.getInstance(); 
       QBPrivateChatManager privateChatManager = chatService.getPrivateChatManager(); 
       privateChatManager.createDialog(19, new QBEntityCallbackImpl<QBDialog>() { 
        @Override 
        public void onSuccess(QBDialog dialog, Bundle args) { 
        } 
       }); 
      } 

      @Override 
      public void onError(QBResponseException errors) { 
       Toast.makeText(getActivity(), errors.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }); 
     return true 
} 
+0

"콜백 지옥"이라고 말하는 것이 맞습니까? :) –

+0

이 코드도 구현했지만 여전히 logcat과 똑같습니다. 그래서 나에게 잘못되어 가고있는 일들을 안내해 주시겠습니까? –

2

당신에게 c 전에 채팅에 로그인해야합니다. reating 대화 상자 (QuickBlox Android SDK v 전 2.6.1 이상을 사용하는 경우)는 link을 참조하십시오. 버전 3.0부터 QBRestChatService 클래스를 사용하여 대화 상자를 만들 수 있습니다. 자세한 내용은 link

관련 문제