Int值没有在button.SetOnClickListener()中更改

时间:2016-07-30 06:42:18

标签: java android

我想在fiveMinuteButton 点击时更改circuitLength的值,但是,该值未被更改。

 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" />

4 个答案:

答案 0 :(得分:0)

是的,每次单击initializing时,它都不会更新,因为fiveMinuteButton值为5(即circuitLength = 5而不是write 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;

        }
    });

答案 1 :(得分:0)

您的代码是否正确请务必点击按钮调用 我认为,你的onclick按钮无法正常工作

答案 2 :(得分:0)

尝试使用此代码然后让我知道,然后我们会进一步调查。

 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();

        }
    });

答案 3 :(得分:0)

您的代码肯定是正确的。如果您更改Activity内的任何变量,它仍然会更改,有三种可能会更改为初始值。

  1. 活动已停止。
  2. 活动重建。
  3. 手动更改变量。
  4. 正如你在这里说的那样

      

    我把日志。它只会暂时存储该值,然后在我调用之后   再次登录OnClickListener,值为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为空,因此显然您在日志中显示为空。

    我希望很清楚。如果您有任何疑问可以随意询问。