gpt4 book ai didi

java - setContentView 不为按钮附加点击事件

转载 作者:行者123 更新时间:2023-11-29 08:42:53 25 4
gpt4 key购买 nike

要求

应用需求是当用户安装并首次打开时,会显示LoginActivity,登录成功后,会要求他输入4位passcode,将来使用,如果应用程序保持空闲并且手机被锁定。

设计

我决定将其设计为 One ActivityMainActivity 并加载 LoginActivitycontentView在一定条件下。

代码部分

MainActivity.java


@Override
protected void onCreate(Bundle savedInstanceState) {
isUserValid=false; //just for testing on initial screen i.e. Login
super.onCreate(savedInstanceState);
if(isUserValid) {
setContentView(R.layout.activity_main);
}
else{
setContentView(R.layout.activity_login);
}
}

@Override
protected void onResume(){
super.onResume();
if(isUserValid) {
setContentView(R.layout.activity_main);
}
else{
setContentView(R.layout.activity_login);

}
}

@Override
protected void onStart(){
super.onStart();
if(isUserValid) {
setContentView(R.layout.activity_main);
}
else{
setContentView(R.layout.activity_login);
}
}

LoginActivity.java


@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

//Attaching click event to button
Button btnValidate=(Button)findViewById(R.id.validate_code);
btnValidate.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
//Functionality
}
});
}

我知道我可以将点击事件直接附加到 activity_login.xml 中的按钮,但只有当我们使用 setActivity() 而不是 时它才有效setContentView 并且我应该在这里使用 setContentView 因为我不希望用户在点击后退按钮时在这两个 View 之间导航。我还尝试在 MainActivity.java 上为 onCreate 中的按钮附加点击事件,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
isUserValid=false; //just for testing on initial screen i.e. Login
super.onCreate(savedInstanceState);
if(isUserValid) {
setContentView(R.layout.activity_main);
}
else{
setContentView(R.layout.activity_login);
//Attaching click event to button
Button btnValidate=(Button)findViewById(R.id.validate_code);
btnValidate.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
//Functionality
}
});
}
}

但这并没有帮助。此外,我继续尝试在这两个 Activity 的 onStartonResume 状态下附加事件,但是,没有用。点击事件根本没有被触发。我保证带有 id 的按钮存在于 activity_login.xml 中。我在这里犯了什么错误。我没有获得这些功能,并且刚刚开始学习 Android。希望为这种行为找到一些解决方案。

最佳答案

我强烈建议使用多个 fragment ,但您仍然可以通过编程方式添加内容 View ,如下所示:

View login = this.getLayoutInflater().inflate(R.layout.activity_login);
addContentView(login, new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

您可以使用膨胀登录来查找 View 和附加监听器。

要删除登录名,您可以使用

((ViewGroup)getWindow().getDecorView()).removeView(login);

同样,我不推荐这种方法。使用 fragment 或自定义对话框会更好。

希望这会有所帮助。

关于java - setContentView 不为按钮附加点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com