2016-05-07 18 views
0

聽起來很愚蠢,但簡單的增量計數器在我的android應用程序中不起作用。簡單的增量計數器在Android應用程序中不起作用

我在應用程序中有兩個活動,每個都有一個計數器,每次調用onCreate方法時都會增加。當我在兩項活動之間切換時,第一項運作良好,但另一項不計算。

我使用同一條線路來創建這樣的變量:

private int mCreate; 

然後,我只是遞增它以同樣的方式在每類中的onCreate方法:

mCreate++; 

這個變量用於兩個不同的類,所以它不應該是一個問題。這是我的第一個Android應用程序,所以我需要一些幫助。

第二個活動的整個代碼。我沒有顯示第一個,因爲唯一的區別在於setOnClickListener方法。

public class ActivityTwo extends Activity { 

private final static String TAG = "Lab-ActivityTwo"; 

private int mCreate; 

private TextView mTvCreate; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_two); 
    mTvCreate = (TextView) findViewById(R.id.create); 

    Button closeButton = (Button) findViewById(R.id.bClose); 
    closeButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      finish(); 

     } 
    }); 

} 

    Log.i(TAG, "Entered the onCreate() method"); // to check if the inCreate method was called 

    mCreate++; 
    mTvCreate.setText("onCreate() calls: " + mCreate); 
    Log.i(TAG, "mCreate = " + mCreate); // just to check if I implemented the TextView worng 
    displayCounts(); 

} 
+0

你可以解釋一下更好,也許顯示更多的代碼?他們應該是兩個不同的櫃檯還是一個持有一個價值? – codeMagic

+0

每次調用createcreate時,都會重新創建活動中的局部變量。如果你需要維護這個變量,你應該把它放在別的地方,例如你的Application類中的一個靜態變量。 – Stefan

+0

@codeMagic我添加了更多的代碼。感謝您的幫助! – Oleg

回答

1

你的第二個計數器不會因爲完成一項活動的所有變量和對象被銷燬後的工作,並通過GC進行免費的原因。下一次您要求該活動時,它將從頭開始創建,並且您的計數每次都保持不變。

像@Opoo說,如果你想得到你應該在應用程序類中定義靜態變量。

+0

是的,我剛剛達到了相同的答案。謝謝!我沒有正確的活動生命週期報表。第一項活動是在onRestart和onStop方法之間切換,這就是爲什麼所有變量都存活並且計數器正常工作。每次使用finish()方法按下按鈕時,第二個活動都會被所有變量銷燬。 – Oleg

相關問題