java - 尝试在 LongClick 上编辑 TextView 的值——几乎可以工作

标签 java android

我的 XML 布局中有两个元素 (TextView),当按下 LongClick 时,它会提示用户输入新值,然后当单击 DONE 按钮时,它应该使用以下命令向 tvScoreHome 显示新输入的值setText()。

当我长按上述元素时,编辑字段和键盘将按预期显示。但是,它不允许我输入任何内容。当我输入某些内容时,它什么也没有显示(但设备会振动,就像按下按钮一样),并且当单击“完成”按钮时,它也会振动,但不会退出键盘并在 tvScoreHome 元素中显示任何内容。

有什么想法吗?

    // set the onLongClickListener for tvScoreHome
    tvScoreHome.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            final EditText userInput = (EditText) findViewById(R.id.userInput);

            InputMethodManager imm = (InputMethodManager) context.getSystemService(Service.INPUT_METHOD_SERVICE);

            userInput.setVisibility(View.VISIBLE);
            imm.showSoftInput(userInput, 0);
            tvScoreHome.setText( userInput.getText() );
            userInput.setVisibility(View.INVISIBLE);

            return true;
        }
    });

最佳答案

在复制数据并隐藏 EditText 之前,您需要让用户有机会输入一些文本。
从监听器中删除这两行:

tvScoreHome.setText( userInput.getText() );
userInput.setVisibility(View.INVISIBLE);

也许您可以在 userInput 失去焦点时使用 OnFocusChangeListener 来运行这两行。

关于java - 尝试在 LongClick 上编辑 TextView 的值——几乎可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14061668/

相关文章:

android - 矩形的角边框半径并不完美(Android Shape)

Android系统杀死我的服务中的serversocket

java - Vaadin 树中的项目太多

java - 如何洗一副非标准牌?

java - 添加监听器导致崩溃?

Java客户端套接字:Cannot receive messages from server to client

java - 无法将 Spring Boot Admin Server 2 和 Spring Boot Admin Client 2 与 Spring Boot 2 集成在单个应用程序中

android - 安全保存 RSA 公钥/私钥

javascript - Web 应用程序到 Android 应用程序

android - 使用 android.graphics.Path 从另一个形状中删除一个形状