Как использовать фрагмент с чатом Zendesk без проблем в панели инструментов? - PullRequest
0 голосов
/ 05 февраля 2020

Я использую библиотеку zendesk для поддержки клиентов в моем приложении https://developer.zendesk.com/embeddables/docs/android-chat-sdk/gettingstarted, но у меня была проблема с настройкой на панели инструментов, похоже, что следующее изображение даже в моем направлении приложения RTL ,

enter image description here

Я нашел решение, если я использую фрагмент для чата и настраиваю панель инструментов активности контейнера, но здесь возникла проблема при использовании активности в качестве предыдущее изображение при нажатии на кнопку (оставить сообщение) открывает этот экран

enter image description here

, и пользователь может выполнить действие, щелкнув кнопку отправить на панель инструментов, но при использовании фрагмента это то, что я получил!

enter image description here

enter image description here

Как вы увидели, пользователь не может отправить данные кнопки отправки нет, так что если кто-то сталкивается с этим, как я могу выполнить настройку, есть ли другой способ?

вот мой код, как сказано в их документации: https://developer.zendesk.com/embeddables/docs/android-chat-sdk/chat#starting -a-chat

   public class CustomerServiceChatActivity extends AppCompatActivity implements ChatListener {

    @BindView(R.id.tv_actionbar_filter_name)
    TextView tvFilterNAmeForActionBar;


    @BindView(R.id.search_action)
    ImageView search_action;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_customer_service_chat);

        ButterKnife.bind(this);

        tvFilterNAmeForActionBar.setText(getResources().getString(R.string.customer_service));

        if (UserController.getLanguageKey().equals("ar")) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

            }
        } else {
            getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
        }

        // orientation change
        if (savedInstanceState != null) {
            return;
        }

        /**
         * If starting activity while the chat widget is actively presented the activity will resume the current chat
         */
        boolean widgetWasActive = stopService(new Intent(this, ChatWidgetService.class));
        if (widgetWasActive) {
            resumeChat();
            return;
        }

        /**
         * We've received an intent request to resume the existing chat.
         * Resume the chat via {@link com.zopim.android.sdk.api.ZopimChat#resume(android.support.v4.app.FragmentActivity)} and
         * start the {@link ZopimChatLogFragment}
         */
        if (getIntent() != null) {
            String action = getIntent().getAction();
            if (ChatActions.ACTION_RESUME_CHAT.equals(action)) {
                resumeChat();
                return;
            }
        }

        /**
         * Attempt to resume chat. If there is an active chat it will be resumed.
         */
        Chat chat = ZopimChat.resume(this);
        if (!chat.hasEnded()) {
            resumeChat();
            return;
        }

        {
            // set pre chat fields as mandatory
            PreChatForm preChatForm = new PreChatForm.Builder()
                    .name(PreChatForm.Field.REQUIRED_EDITABLE)
                    .email(PreChatForm.Field.REQUIRED_EDITABLE)
                    .phoneNumber(PreChatForm.Field.REQUIRED_EDITABLE)
                    .department(PreChatForm.Field.REQUIRED_EDITABLE)
                    .message(PreChatForm.Field.REQUIRED_EDITABLE)
                    .build();

      // build chat config
            ZopimChat.SessionConfig config = new ZopimChat.SessionConfig()
                    .preChatForm(preChatForm);

           ZopimChat.init("My Zopim account key");

            ZopimChatFragment fragment = new ZopimChatFragment();
            FragmentManager manager = getSupportFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            transaction.replace(R.id.chat_fragment_container, fragment, ZopimChatFragment.class.getName());
            transaction.commit();
        }

    }

    private void resumeChat() {

        FragmentManager manager = getSupportFragmentManager();
        // find the retained fragment
        if (manager.findFragmentByTag(ZopimChatLogFragment.class.getName()) == null) {
            ZopimChatLogFragment chatLogFragment = new ZopimChatLogFragment();

            FragmentTransaction transaction = manager.beginTransaction();
            transaction.add(com.zopim.android.sdk.R.id.chat_fragment_container, chatLogFragment, ZopimChatLogFragment.class.getName());
            transaction.commit();
        }
    }

    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
    }

    @Override
    public void onChatLoaded(Chat chat) {

    }

    @Override
    public void onChatInitialized() {

    }

    @Override
    public void onChatEnded() {
        finish();
    }
}
...