Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过单击InlineKeyboardButton打开ReplyKeyboardMarkup?_Java_Telegram Bot - Fatal编程技术网

Java 如何通过单击InlineKeyboardButton打开ReplyKeyboardMarkup?

Java 如何通过单击InlineKeyboardButton打开ReplyKeyboardMarkup?,java,telegram-bot,Java,Telegram Bot,我需要通过单击InlineKeyboardButton使用打开ReplyKeyboardMarkup 在我的例子中,单击createpost按钮 然后打开这种类型的键盘 因此,我尝试单击InlineKeyboardButton并使用CallbackQuery(处理单击)打开ReplyKeyboardMarkup,如下所示 当我点击我的按钮时,我只看到屏幕上的时钟(但我有CallbackQuery来处理这个按钮): else if(调用_data.equals(“校正后”)){ ReplyK

我需要通过单击
InlineKeyboardButton
使用打开
ReplyKeyboardMarkup

在我的例子中,单击
createpost
按钮

然后打开这种类型的键盘

因此,我尝试单击
InlineKeyboardButton
并使用
CallbackQuery
(处理单击)打开
ReplyKeyboardMarkup
,如下所示

当我点击我的按钮时,我只看到屏幕上的时钟(但我有
CallbackQuery
来处理这个按钮):

else if(调用_data.equals(“校正后”)){
ReplyKeyboardMarkup keyboardMarkup=新建ReplyKeyboardMarkup();
列表键盘=新建ArrayList();
KeyboardRow=新的KeyboardRow();
第行。添加(“清除”);
添加(“预览”);
键盘。添加(行);
行=新键盘行();
行。添加(“取消”);
第行。添加(“下一行”);
键盘。添加(行);
键盘标记。设置键盘(键盘);
AnswerCallbackQuery a=新的AnswerCallbackQuery()
.setCallbackQueryId(update.getCallbackQuery().getId());
试一试{
执行(a);
}捕获(e){
e、 printStackTrace();
}
}

我需要纠正或补充什么?非常感谢您的帮助。

如果我答对了,您希望单击其中一个
InlineKeyboardButton
按钮,然后打开
ReplyKeyboardMarkup
。为了做到这一点,您可以使用如下代码:

public class YourClass extends TelegramLongPollingBot {

    @Override
    public void onUpdateReceived(Update update) {
        if (update.hasCallbackQuery()) {
            String data = update.getCallbackQuery().getData();
            if (data.equals("correcting_post")) {
                try {
                    ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
                    List<KeyboardRow> keyboard = new ArrayList<>();
                    KeyboardRow row = new KeyboardRow();
                    row.add("Test button");
                    keyboard.add(row);
                    keyboardMarkup.setKeyboard(keyboard);

                    // Create a message object
                    SendMessage message = new SendMessage()
                            .setChatId(update.getCallbackQuery().getMessage().getChatId())
                            .enableMarkdown(true)
                            .setText("Message text");
                    message.setReplyMarkup(keyboardMarkup);
                    execute(message);
                } catch (TelegramApiException e) {
                    //exception handling
                }
            }
            //Check another options for data
        }
    }

    ...
}
public类YourClass扩展了telegramongpollingbot{
@凌驾
收到更新资料时的公共作废(更新){
if(update.hasCallbackQuery()){
字符串数据=update.getCallbackQuery().getData();
if(data.equals(“校正后”)){
试一试{
ReplyKeyboardMarkup keyboardMarkup=新建ReplyKeyboardMarkup();
列表键盘=新建ArrayList();
KeyboardRow=新的KeyboardRow();
行添加(“测试按钮”);
键盘。添加(行);
键盘标记。设置键盘(键盘);
//创建消息对象
SendMessage=新建SendMessage()
.setChatId(更新.getCallbackQuery().getMessage().getChatId())
.enableMarkdown(正确)
.setText(“消息文本”);
message.setReplyMarkup(键盘标记);
执行(消息);
}捕获(e){
//异常处理
}
}
//检查数据的其他选项
}
}
...
}
也许这个库提供了一种更方便的方法,但至少这种代码的和平是有效的

public class YourClass extends TelegramLongPollingBot {

    @Override
    public void onUpdateReceived(Update update) {
        if (update.hasCallbackQuery()) {
            String data = update.getCallbackQuery().getData();
            if (data.equals("correcting_post")) {
                try {
                    ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
                    List<KeyboardRow> keyboard = new ArrayList<>();
                    KeyboardRow row = new KeyboardRow();
                    row.add("Test button");
                    keyboard.add(row);
                    keyboardMarkup.setKeyboard(keyboard);

                    // Create a message object
                    SendMessage message = new SendMessage()
                            .setChatId(update.getCallbackQuery().getMessage().getChatId())
                            .enableMarkdown(true)
                            .setText("Message text");
                    message.setReplyMarkup(keyboardMarkup);
                    execute(message);
                } catch (TelegramApiException e) {
                    //exception handling
                }
            }
            //Check another options for data
        }
    }

    ...
}