为什么java类字段(和事件处理程序字段)不会在android对话框和自定义视图中初始化?
我用java在android中创建了很多对话框,如下所示:为什么java类字段(和事件处理程序字段)不会在android对话框和自定义视图中初始化?,java,android,field,android-custom-view,android-dialog,Java,Android,Field,Android Custom View,Android Dialog,我用java在android中创建了很多对话框,如下所示: public class MyComponent extends LinearLayout { // constructors that will call InitializeComponent after inflate layout private View.OnClickListener PersistButton_OnClickListener = new View.OnClickListener() {
public class MyComponent extends LinearLayout {
// constructors that will call InitializeComponent after inflate layout
private View.OnClickListener PersistButton_OnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
PersistRest();
}
};
private void PersistRest() {
int selectedIndex = RestTimePicker().getValue() - 1;
long selectedTimeSpan = predefinedDurationValues[selectedIndex];
SecretaryManagerUtility.RegisterRestByDuration("", SecretaryManagerUtility.Me(), System.currentTimeMillis(), selectedTimeSpan);
}
@Override
protected void InitializeComponents() {
PersistButton().setOnClickListener(PersistButton_OnClickListener);
super.InitializeComponents();
}
private Button m_PersistButton;
protected Button PersistButton(){
if(m_PersistButton == null)
m_PersistButton = (Button)rootView.findViewById(R.id.PersistButton);
return m_PersistButton;
}
}
问题是方法PersistButton\u OnClickListener。单击按钮PersistButton
但如果我将onClick赋值更改为以下代码,则一切正常:
PersistButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PersistRest();
}
});
为什么??
此问题仅在android对话框和android自定义视图中出现我找到了答案,但为错误的问题向我道歉。InitializeLayout()方法将在构造函数中调用(我使用自定义工具从xml生成视图对象)
问题是java字段在调用super()构造函数之前不会初始化,然后,在调用InitializeLayout()时字段为null。我找到了答案,但对于错误的问题向我道歉。InitializeLayout()方法将在构造函数中调用(我使用自定义工具从xml生成视图对象)
问题是java字段在调用super()构造函数之前不会初始化,然后,在调用InitializeLayout()时字段为空。仅供参考:java中的Pascal大小写使读取代码更加困难。请考虑使用java约定。java中的Pascal外壳使您的代码读起来更加困难。请考虑遵守java约定。