我正在尝试在我的主页上设置一个复选框,选中该复选框后,应该转到另一个视图,否则,会在同一视图中显示错误消息。
这只是第一次正常工作。如果未选中,则显示错误,如果选中,则呈现下一个视图。
然而,当我使用后退按钮返回此主页时,此时复选框变得多余。即使取消选中,也能正确呈现下一页。
如果我删除了ViewGroup的所有视图,它将永久删除它们,并且一旦我返回它,主页就会为空。 我相信每次返回视图时都需要重置复选框。 但是,我无法做同样的事情。
请在下面找到我的代码(我是Android开发的初学者):
public class MainActivity extends AppCompatActivity {
public static final String EXTRA_MESSAGE="com.android.AI";
public boolean isCheckBoxClicked=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//isChecked is the onClick attribute for checkbox in the main.xml here
public void isChecked(View view){
boolean isChecked = ((CheckBox) view).isChecked();
if(isChecked){
isCheckBoxClicked = true;
} else {
isCheckBoxClicked = false;
}
}
//Send message is onClick for a submit button
public void sendMessage(View view){
if(isCheckBoxClicked) {
Intent intent = new Intent(this, SeniorTeam.class);
startActivity(intent);
} else {
TextView acceptTerms = new TextView(this);
acceptTerms.setTextSize(15);
acceptTerms.setText("Please accpet terms and conditions before proceeding");
ViewGroup terms = (ViewGroup) findViewById(R.id.activity_main);
terms.addView(acceptTerms);
}
}
}
答案 0 :(得分:0)
据我所知,您不需要使用后退按钮返回,是吗?
如果你没有2个解决方案
简单:
如果
this.finish();
所以你的活动应该是这样的:
public class MainActivity extends AppCompatActivity {
public static final String EXTRA_MESSAGE="com.android.AI";
public boolean isCheckBoxClicked=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//isChecked is the onClick attribute for checkbox in the main.xml here
public void isChecked(View view){
boolean isChecked= ((CheckBox) view).isChecked();
if(isChecked){
isCheckBoxClicked=true;
}
else{
isCheckBoxClicked=false;
}
}
//Send message is onClick for a submit button
public void sendMessage(View view){
if(isCheckBoxClicked) {
Intent intent = new Intent(this, SeniorTeam.class);
startActivity(intent);
this.finish();
}
else {
TextView acceptTerms = new TextView(this);
acceptTerms.setTextSize(15);
acceptTerms.setText("Please accpet terms and conditions before proceeding");
ViewGroup terms = (ViewGroup) findViewById(R.id.activity_main);
terms.addView(acceptTerms);
}
}
有点复杂: 如果您使用第一种方法,按下将实际上将用户踢出您的应用程序,因此如果您需要,您可以在下一个活动中按下该方法时覆盖该方法,以便将此代码添加到您的NEXT活动中(SeniorTeam。类)
@Override
public void onBackPressed(){
//custom actions here leave blank to render back useless
}
答案 1 :(得分:0)
您应该完全删除isCheckBoxClicked
变量isChecked
函数(并从属性中删除它)。在sendMessage函数中,只需调用((CheckBox)findViewById(id)).isChecked()
而不是isCheckBoxClicked
你编码的方式,变量和UI之间的连接空间太大。没有必要。