簡體   English   中英

非常基本的變量超出范圍問題-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);

    }

由於超出范圍,它們不斷返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM