簡體   English   中英

int值未在button.SetOnClickListener()中更改

[英]Int Value is not changing in button.SetOnClickListener()

我試圖改變時circuitLength的價值fiveMinuteButton點擊 ,但是,值不會被改變。

 private Button fiveMinuteButton;
 int circuitLength;

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_workout_settings_screen);

    fiveMinuteButton = (Button) findViewById(R.id.fiveminutesbuttonid);



    fiveMinuteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            circuitLength = 5;

        }
    });

XML:

<Button
    android:id="@+id/fiveminutesbuttonid"
    android:background="@drawable/whitebutton_shape"
    android:layout_below="@+id/workoutlengthtitleId"
    android:layout_marginTop="8dp"
    android:text="@string/fiveminutes_text"
    android:layout_width="90dp"
    android:layout_height="60dp" />

是的,每次您單擊fiveMinuteButton時都initializing值5時,它不會被更新(即circuitLength = 5而是寫入circuitLength = circuitLength + 5)。

將您的代碼更改為關注。

private Button fiveMinuteButton;
 int circuitLength;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_workout_settings_screen);
    fiveMinuteButton = (Button) findViewById(R.id.fiveminutesbuttonid);
    circuitLength = 5;
    InitialzeUIButtons();



    fiveMinuteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            circuitLength = circuitLength + 5;

        }
    });

您的代碼正確無誤,請確保onclick按鈕調用正確,或者我認為您的onclick按鈕不起作用

試試這個代碼,然后讓我知道,然后我們進一步調查。

 private Button fiveMinuteButton;
 int circuitLength;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_workout_settings_screen);


    Toast.makeText(this,"circuitLength value ="+circuitLength, Toast.LENGTH_LONG).show();
    fiveMinuteButton = (Button) findViewById(R.id.fiveminutesbuttonid);
    fiveMinuteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            circuitLength = 5;
            Toast.makeText(ACtivityName.this,"circuitLength value ="+circuitLength, Toast.LENGTH_LONG).show();

        }
    });

您的代碼肯定是正確的。 如果您在Activity中更改任何變量,它仍然會更改,則有三種可能性將其更改為初始值。

  1. 活動已停止。
  2. 活動已重新創建。
  3. 變量手動更改。

就像你在這里說的

我放了一個日志。 它僅臨時存儲該值,然后在OnClickListener外部再次調用log后,該值為null。

我相信您正在做這樣的事情。

private Button fiveMinuteButton;
int circuitLength;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_workout_settings_screen);

    fiveMinuteButton = (Button) findViewById(R.id.fiveminutesbuttonid);

    fiveMinuteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            circuitLength = 5;

            Log.e("count", ""+circuitLength);
        }
    });
    Log.e("count", ""+circuitLength);
}

現在,當你的應用程序啟動onCreate將默認情況下稱為circuitLength是空,因此很明顯你在日志越來越空。

我希望這很清楚。 如果您有任何疑問,請隨時詢問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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