为什么 java 类字段(和事件处理程序字段)不会在 android 对话框和自定义视图中初始化?



我用java在android中做了很多对话框,如下所示:

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_OnClickListener.onClick方法PersistButton

但是如果我将onClick分配更改为以下代码,则一切正常:

PersistButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PersistRest();
}
});

为什么? 此问题仅发生在安卓对话框和安卓自定义视图中

我找到了答案,但为不正确的问题道歉。InitializeLayout(( 方法将在构造函数中调用(我使用自定义工具从 xml 生成视图对象(

问题是Java字段在调用super((构造函数之前不会初始化,然后,当调用InitializeLayout((时,字段为空

最新更新