Android 按钮未在纵向模式下单击
我有一个按钮,通过代码将onclick侦听器附加到该按钮上。我必须通过代码来解释它,因为它在一个片段中 在横向模式下,侦听器工作正常,但在纵向模式下则不行。甚至没有“咔嗒”声 在我的xml文件中,我将按钮的初始可见性设置为不可见,然后在用户单击按钮所在视图组中的单选按钮时使其可见。单选按钮的onclicklisteners在纵向和横向模式下都工作正常 现在,如果我删除xml中的“android:visibility=”invisible”代码,onclickstener在纵向模式下工作得很好!但当然我需要它在用户单击单选按钮之前不可见,否则UI就没有意义了。真的很奇怪 这是我的密码:Android 按钮未在纵向模式下单击,android,Android,我有一个按钮,通过代码将onclick侦听器附加到该按钮上。我必须通过代码来解释它,因为它在一个片段中 在横向模式下,侦听器工作正常,但在纵向模式下则不行。甚至没有“咔嗒”声 在我的xml文件中,我将按钮的初始可见性设置为不可见,然后在用户单击按钮所在视图组中的单选按钮时使其可见。单选按钮的onclicklisteners在纵向和横向模式下都工作正常 现在,如果我删除xml中的“android:visibility=”invisible”代码,onclickstener在纵向模式下工作得很好!但
private void setOnClickForSaveButton(View v) {
Button changeFundsSave = (Button) v.findViewById(R.id.change_funds_save);
changeFundsSave.setOnClickListener(saveListener);
}
Button.OnClickListener saveListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
//Get the rootview
View rootView = v.getRootView();
EditText changeFundsEdit = (EditText) rootView.findViewById(R.id.change_funds_edit);
if(changeFundsEdit.getText().toString().equals("")) {
new AlertDialog.Builder(getActivity())
.setTitle( "" )
.setMessage( "Enter the number of units" )
.setPositiveButton( "Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
return;
}
}
};
private void setOnClicksForRadioButtons(View v) {
RadioButton rb1 = (RadioButton)v.findViewById(R.id.add_units);
RadioButton rb2 = (RadioButton)v.findViewById(R.id.remove_units);
RadioButton rb3 = (RadioButton)v.findViewById(R.id.set_units);
rb1.setOnClickListener(addRemoveSetButtonListener);
rb2.setOnClickListener(addRemoveSetButtonListener);
rb3.setOnClickListener(addRemoveSetButtonListener);
}
OnClickListener addRemoveSetButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
// Since we only have the radiobutton view, we need to get the parent
View rootView = v.getRootView();
//Make the controls visible
TextView changeFundsText = (TextView) rootView.findViewById(R.id.change_funds_text);
EditText changeFundsEdit = (EditText) rootView.findViewById(R.id.change_funds_edit);
Button changeFundsSave = (Button) rootView.findViewById(R.id.change_funds_save);
changeFundsText.setVisibility(View.VISIBLE);
changeFundsEdit.setVisibility(View.VISIBLE);
changeFundsSave.setVisibility(View.VISIBLE);
}
};
}
我猜是这样
1) 对于在setOnClickForSaveButton中传递的视图,您是否再次找到DViewById?因为旧视图将被销毁,并且在更改屏幕方向时将创建一个视图
2) 您是否有R.id.change\u funds\u save的多个id
3) 在onclick(v)的第一行添加日志若要查看它是否被调用,但转到了另一个您没有预料到的分支。除非您从
布局区和布局端口加载两个单独的xml布局文件,否则横向模式和纵向模式之间应该没有太大区别。也就是说,我要大胆猜测一下,您的应用程序可能不是w由于配置更改而无法正常工作。请告诉我这是否属实…例如,您的应用程序是否开始工作,但在旋转屏幕时停止工作
如果这是真的,你应该研究活动生命周期是如何影响你的视图的,onClickListener
s.解决了这个问题!在纵向模式下,像其他人一样,我在一个单独的活动中加载一个片段。出于习惯,我调用setContentView(某个东西)在加载片段之前!所以最终两个布局相互重叠,可见和不可见按钮相互重叠,事情一定搞砸了。该死,我不确定我是否喜欢片段的概念。我是第一次使用它们。但也许我需要先学会如何正确地连接它们,然后再开始使用习惯它们:)非常感谢您的帮助解决了这个问题!在纵向模式下,像其他人一样,我在一个单独的活动中加载一个片段。出于习惯,我调用setContentView(某物)在加载片段之前!所以最终两个布局相互重叠,可见和不可见按钮相互重叠,事情一定搞砸了。该死,我不确定我是否喜欢片段的概念。我是第一次使用它们。但也许我需要先学会如何正确连接它们我已经习惯了:)非常感谢您的帮助您应该将此作为答案发布,然后接受。这样您就可以正式解决问题:)可以-只要我有足够的代表:)问题解决-我正在使用setContentView进行活动,同时还在R.id.content中设置一个片段!感谢您的回复。