You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android按钮点击文本为空问题:实现按钮文本随EditText内容更改

解决按钮点击后文本为空的问题

嘿,我帮你找出问题所在啦,这两个小细节出错导致了按钮文本为空、按钮缩小的情况:

  • 过早获取输入框内容:你在onCreate()方法里就直接获取了EditText的文本,这时候用户还没来得及输入任何内容,拿到的自然是空字符串。点击按钮时设置这个空文本,按钮用wrap_content就会因为没有内容而缩小。
  • 密码输入框ID绑定错误:你把passwordInput绑定到了R.id.username,而不是对应的R.id.password,这样根本拿不到密码输入框的内容,密码按钮和用户密码组合按钮的文本自然也不对。

下面是修复后的MainActivity.java代码,我把获取输入框内容的逻辑移到了按钮点击事件里,同时修正了ID绑定的问题:

package com.example.balkarrana.lab2; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends AppCompatActivity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 

        // 先获取控件实例,不要提前取文本
        final EditText usernameInput = (EditText)findViewById(R.id.username); 
        final Button userButtonVariable = (Button)findViewById(R.id.userButton); 
        
        // 修正密码输入框的ID绑定
        final EditText passwordInput = (EditText)findViewById(R.id.password); 
        final Button passButtonVariable = (Button)findViewById(R.id.passButton); 
        final Button userPassButtonVariable = (Button)findViewById(R.id.userPassButton); 

        userButtonVariable.setOnClickListener(new View.OnClickListener() { 
            public void onClick(View v) { 
                // 点击时才获取当前输入的文本
                String userText = usernameInput.getText().toString(); 
                userButtonVariable.setText(userText); 
            } 
        }); 

        passButtonVariable.setOnClickListener(new View.OnClickListener() { 
            public void onClick(View v) { 
                // 点击时才获取当前输入的密码文本
                String passText = passwordInput.getText().toString(); 
                passButtonVariable.setText(passText); 
            } 
        }); 

        userPassButtonVariable.setOnClickListener(new View.OnClickListener() { 
            public void onClick(View v) { 
                // 点击时同时获取两个输入框的文本并组合
                String userText = usernameInput.getText().toString(); 
                String passText = passwordInput.getText().toString(); 
                String userPassText = userText + passText; 
                userPassButtonVariable.setText(userPassText); 
            } 
        }); 
    } 
}

这样修改后,每次点击按钮时都会实时获取用户当前输入的内容,按钮文本就会正确显示输入的内容,也不会因为空文本而缩小啦。

内容的提问来源于stack exchange,提问作者Balkar Rana

火山引擎 最新活动