非常基本的变量超出范围问题 - Java Android
Very Basic Variable Out of Scope Issue - Java Android
我正在尝试使用以下 3 个变量:
public boolean mDetailsExpanded;
public int mHeightBefore;
public String mHeaderItem;
然而,当我将它们分配给字符串、布尔值和整数时:
public void setMessageDetailsExpanded(MessageHeaderItem i, boolean expanded,
int heightBefore) {
mDiff = (expanded ? 1 : -1) * Math.abs(i.getHeight() - heightBefore);
String mHeaderItem = i.toString();
boolean mDetailsExpanded = expanded;
int mHeightBefore = heightBefore;
}
然后尝试稍后保存它们:
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putFloat(BUNDLE_KEY_WEBVIEW_Y_PERCENT, calculateScrollYPercent());
outState.putBoolean(getTag(), mDetailsExpanded);
outState.putInt(getTag(), mHeightBefore);
outState.putString(getTag(), mHeaderItem);
super.onSaveInstanceState(outState);
}
由于超出范围,它们不断 return null。我怎样才能更正它以将它们置于 onSaveInstanceState 的范围内从而保持它们的值?
在 setMessageDetailsExpanded
中,您正在创建局部变量而不是分配给您的成员变量。将其更改为:
public void setMessageDetailsExpanded(MessageHeaderItem i, boolean expanded,
int heightBefore) {
mDiff = (expanded ? 1 : -1) * Math.abs(i.getHeight() - heightBefore);
mHeaderItem = i.toString();
mDetailsExpanded = expanded;
mHeightBefore = heightBefore;
}
String mHeaderItem = i.toString();
boolean mDetailsExpanded = expanded;
int mHeightBefore = heightBefore;
这是局部变量,它的作用域是方法作用域。这就是为什么无法在方法之外访问的原因。
我正在尝试使用以下 3 个变量:
public boolean mDetailsExpanded;
public int mHeightBefore;
public String mHeaderItem;
然而,当我将它们分配给字符串、布尔值和整数时:
public void setMessageDetailsExpanded(MessageHeaderItem i, boolean expanded,
int heightBefore) {
mDiff = (expanded ? 1 : -1) * Math.abs(i.getHeight() - heightBefore);
String mHeaderItem = i.toString();
boolean mDetailsExpanded = expanded;
int mHeightBefore = heightBefore;
}
然后尝试稍后保存它们:
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putFloat(BUNDLE_KEY_WEBVIEW_Y_PERCENT, calculateScrollYPercent());
outState.putBoolean(getTag(), mDetailsExpanded);
outState.putInt(getTag(), mHeightBefore);
outState.putString(getTag(), mHeaderItem);
super.onSaveInstanceState(outState);
}
由于超出范围,它们不断 return null。我怎样才能更正它以将它们置于 onSaveInstanceState 的范围内从而保持它们的值?
在 setMessageDetailsExpanded
中,您正在创建局部变量而不是分配给您的成员变量。将其更改为:
public void setMessageDetailsExpanded(MessageHeaderItem i, boolean expanded,
int heightBefore) {
mDiff = (expanded ? 1 : -1) * Math.abs(i.getHeight() - heightBefore);
mHeaderItem = i.toString();
mDetailsExpanded = expanded;
mHeightBefore = heightBefore;
}
String mHeaderItem = i.toString();
boolean mDetailsExpanded = expanded;
int mHeightBefore = heightBefore;
这是局部变量,它的作用域是方法作用域。这就是为什么无法在方法之外访问的原因。