java - 全局初始化的控件以不同的方法变为空
问题描述
我在顶部声明了几个变量,并且这些变量在onCreate
方法中被初始化,当我在不同的方法中使用那些正在返回的变量时null
下面的代码始终显示“控件变为空..”结果。
public class MainActivity extends AppCompatActivity
{
EditText txtUsername,txtPass;
Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText txtUsername = (EditText) findViewById(R.id.txtUserName);
EditText txtPass = (EditText) findViewById(R.id.txtPassword);
Button btnLogin=(Button)findViewById(R.id.btnLogin);
txtUsername.setText("Arvind");
txtPass.setText("1234");
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
doLogin();
}
});
}
void doLogin()
{
if(txtUsername!=null || txtPass!=null) {
if (txtUsername.getText() != null && txtPass.getText() != null) {
Toast.makeText(this, "Successfully logged in..", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Username or Password can't be empty..", Toast.LENGTH_SHORT).show();
}
}else
{
Toast.makeText(this, "Controls becomes null..", Toast.LENGTH_SHORT).show();
}
}
}
我该如何解决这个问题?
解决方案
你做错了,如果你声明为全局变量,那么为什么你应该再次在本地onCreate()
方法中声明新变量
您必须使用与声明全局相同的变量,而不是创建新变量。
看这个,
public class MainActivity extends AppCompatActivity
{
EditText txtUsername,txtPass;
Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtUsername = (EditText) findViewById(R.id.txtUserName);
txtPass = (EditText) findViewById(R.id.txtPassword);
btnLogin=(Button)findViewById(R.id.btnLogin);
txtUsername.setText("Arvind");
txtPass.setText("1234");
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
doLogin();
}
});
}
void doLogin()
{
if(txtUsername!=null || txtPass!=null) {
if (txtUsername.getText() != null && txtPass.getText() != null) {
Toast.makeText(this, "Successfully logged in..", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Username or Password can't be empty..", Toast.LENGTH_SHORT).show();
}
}else
{
Toast.makeText(this, "Controls becomes null..", Toast.LENGTH_SHORT).show();
}
}
}
推荐阅读
- python - 如何将 np.linalg.solve 移植到 R?
- c++ - 忽略 sprintf* 函数中的空白字符
- r - 因子变量标签,但按比例
- python - 验证 SIM 卡上的 ADM 以更改 IMSI
- node.js - 如何在 VS-Code 中更改为较旧/稳定版本的节点?
- python-3.x - Python,从外部类更新 statusBar()
- flutter - Firebase 在颤振应用中不显示通知
- r - 使用 rvest 包在 R 中抓取博客文章
- android - fastlane:[!] Google Api 错误:无效请求 - 找不到包:com.example.todo
- wso2 - 我可以在同一个集群中部署两个 wso2 api 管理器吗