[英]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);
}
由於超出范圍,它們不斷返回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;
這是局部變量,其范圍是方法范圍。 這就是為什么在方法之外無法訪問的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.