Я использую библиотеку zendesk
для поддержки клиентов в моем приложении https://developer.zendesk.com/embeddables/docs/android-chat-sdk/gettingstarted, но у меня была проблема с настройкой на панели инструментов, похоже, что следующее изображение даже в моем направлении приложения RTL ,
Я нашел решение, если я использую фрагмент для чата и настраиваю панель инструментов активности контейнера, но здесь возникла проблема при использовании активности в качестве предыдущее изображение при нажатии на кнопку (оставить сообщение) открывает этот экран
, и пользователь может выполнить действие, щелкнув кнопку отправить на панель инструментов, но при использовании фрагмента это то, что я получил!
Как вы увидели, пользователь не может отправить данные кнопки отправки нет, так что если кто-то сталкивается с этим, как я могу выполнить настройку, есть ли другой способ?
вот мой код, как сказано в их документации: 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();
}
}