1

プライベートチャットの作成ダイアログが表示されません。私はPrivateChatManagerRoidプライベートチャットの問題

以下
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; 
    } 
} 

私のlogcatでのnullオブジェクト参照を取得しています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バージョン2.6.1以前を使用している場合)は、linkを参照してください。 バージョン3.0から、クラスQBRestChatServiceを使用してダイアログを作成できます。詳細はlink

関連する問題