Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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 当键盘打开时按下后退按钮时,android中的TextView将恢复为以前的值_Java_Android_Listview_Back Button - Fatal编程技术网

Java 当键盘打开时按下后退按钮时,android中的TextView将恢复为以前的值

Java 当键盘打开时按下后退按钮时,android中的TextView将恢复为以前的值,java,android,listview,back-button,Java,Android,Listview,Back Button,在我的Android项目中,我有一项活动是围绕群组消息传递展开的。消息包含在ListView中,每行都有一个like按钮。按下like按钮时,包含like总数的标签将增加一个(如果like未被选中,则减去like)。但是,当您在键盘打开时喜欢某条消息,然后按“上一步”按钮时,键盘将关闭,最近喜欢/未喜欢的消息将恢复为以前的“喜欢”计数。有什么我可以添加到TextView来阻止它这样做吗?或者我可以做些什么来onBackButtonPressed()?谢谢你的帮助 这是我更改likeCount文本

在我的Android项目中,我有一项活动是围绕群组消息传递展开的。消息包含在ListView中,每行都有一个like按钮。按下like按钮时,包含like总数的标签将增加一个(如果like未被选中,则减去like)。但是,当您在键盘打开时喜欢某条消息,然后按“上一步”按钮时,键盘将关闭,最近喜欢/未喜欢的消息将恢复为以前的“喜欢”计数。有什么我可以添加到TextView来阻止它这样做吗?或者我可以做些什么来
onBackButtonPressed()
?谢谢你的帮助

这是我更改likeCount文本的代码:

    class MessageInfo {
    public String messageID;
    public String messageContent;
    public String messageLikes;
    public String senderID;
}

class ViewHolder {

    public TextView messageContent = null;
    public TextView messageLikeCount = null;
    public Button likeButton = null;
    public String messageLikes = null;
    public String messageID = null;


    public String messageSendTime;
    public String senderID;

    final CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
            getApplicationContext(),
            keys.getIdPool(), // Identity Pool ID
            Regions.US_EAST_1 // Region
    );

    public AmazonDynamoDBClient dynamoDb = Region.getRegion(Regions.US_EAST_1)
            .createClient(
                    AmazonDynamoDBClient.class,
                    credentialsProvider,
                    new ClientConfiguration()
            );

    ViewHolder(View row) {
        messageContent = (TextView)row.findViewById(R.id.messageText);
        messageLikeCount = (TextView)row.findViewById(R.id.likeCountText);
        likeButton = (Button)row.findViewById(R.id.likeBtn);

        likeButton.setTypeface(fontAwesome);
    }

    void populateFrom(final MessageInfo message) {

        Log.e("MESSAGE2", "The message is " + message.messageContent);

        messageContent.setText(message.messageContent);
        messageID = message.messageID;
        messageLikes = message.messageLikes;

        int likeCount = 0;

        if (messageLikes == null) {
            messageLikes = "";
        }

        Log.e("MessageLikes", "Mesage likes is " + messageLikes);

        if (messageLikes.contains(userInfo.getProfId())) {
            likeButton.setText(getString(R.string.icon_heart_closed));
            likeButton.setTextColor(getResources().getColor(R.color.colorHeart));
        }

        for (int i = 0; i < messageLikes.length(); i++) {

            if (messageLikes.charAt(i) == ',') {

                likeCount += 1;

            }

        } // end for loop to get number of likes


        messageLikeCount.setText(String.valueOf(likeCount));




        likeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("Clicked", "Like button clicked");

                likeButton.setText(getString(R.string.icon_heart_closed));
                likeButton.setTextColor(getResources().getColor(R.color.colorHeart));

                int newLikeCount = Integer.parseInt(messageLikeCount.getText().toString()) + 1;
                messageLikeCount.setText(String.valueOf(newLikeCount));

            }
        });

    }

}

class MessageAdapter extends ArrayAdapter<MessageInfo> {
    MessageAdapter() {
        super(SingleGroupActivity.this, android.R.layout.simple_list_item_1, messageArr);
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder messageViewHolder;

        Log.e("MESSAGE", "The message is " + messageArr.get(position).messageContent);

        if (convertView == null) {
            LayoutInflater inflater = getLayoutInflater();
            convertView = inflater.inflate(R.layout.message_row_layout, null);

            messageViewHolder = new ViewHolder(convertView);
            convertView.setTag(messageViewHolder);
        } else {

            messageViewHolder = (ViewHolder)convertView.getTag();
        }

        if (messageArr.size() > 0) {
            MessageInfo tempMessage = messageArr.get(position);
            messageViewHolder.populateFrom(tempMessage);
        }


        return (convertView);
    }

}
class-MessageInfo{
公共字符串messageID;
公共字符串消息内容;
公共字符串;
公共字符串senderID;
}
类视图持有者{
public TextView messageContent=null;
public TextView messageLikeCount=null;
公共按钮,如按钮=空;
公共字符串messageLikes=null;
公共字符串messageID=null;
公共字符串messageSendTime;
公共字符串senderID;
最终CognitoCachingCredentialsProvider证书提供者=新CognitoCachingCredentialsProvider(
getApplicationContext(),
keys.getIdPool(),//标识池ID
Regions.US\u EAST\u 1//地区
);
public AmazonDynamoDBClient dynamoDb=Region.getRegion(Regions.US\u EAST\u 1)
.createClient(
AmazonDynamoDBClient.class,
证书提供者,
新客户端配置()
);
视图保持架(视图行){
messageContent=(TextView)row.findViewById(R.id.messageText);
messageLikeCount=(TextView)row.findViewById(R.id.likeCountText);
likeButton=(按钮)row.findViewById(R.id.likeBtn);
设置字体(字体);
}
无效populateFrom(最终消息信息消息){
Log.e(“MESSAGE2”,“消息为”+message.messageContent);
messageContent.setText(message.messageContent);
messageID=message.messageID;
messageLikes=message.messageLikes;
int-likeCount=0;
if(messageLikes==null){
messageLikes=“”;
}
Log.e(“MessageLikes”,“Mesage likes is”+MessageLikes);
if(messageLikes.contains(userInfo.getProfId())){
比如按钮.setText(getString(R.string.icon\u heart\u closed));
比如按钮.setTextColor(getResources().getColor(R.color.colorHeart));
}
for(int i=0;i0){
MessageInfo tempMessage=messageArr.get(位置);
messageViewHolder.populateFrom(tempMessage);
}
返回(转换视图);
}
}

当用户用以下代码点击like按钮时,您可以隐藏键盘:

public static void hideKeypad(Activity context) {
    View view = context.getCurrentFocus();
    if (view != null) {
      InputMethodManager imm =
      (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
   }
}

您在点击like按钮时是否尝试关闭键盘?我认为不建议以编程方式关闭键盘。用户应在完成键入后关闭键盘。@hermt2您能将代码发布到更新like计数的位置吗?当我第一次按“上一步”按钮时,键盘自动关闭。是的,我将添加该代码段。我将其添加到代码中,现在只要我喜欢一条消息,键盘就会关闭,likeCount文本仍会恢复为以前的值。因此,看起来是键盘关闭导致文本字段值丢失。