2016-07-30 8 views
0

fiveMinuteButtonをクリックしたときにcircuitLengthの値を変更しようとしましたが、値が変更されていません。ボタン値が変化しないbutton.SetOnClickListener()

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:あなたはinitializing値5あるよう

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

'InitialzeUIButtons()'とxmlレイアウトを表示しますか? –

+0

私はちょうどそれを変更しました、なぜ値がcircuitLengthに格納されていないのか分かりません –

+0

クリックしてトーストを追加し、テストの値をチェックしてください。 –

答えて

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

     } 
    }); 
+0

ありがとう、Android Studioの最新バージョンをアップデートして再起動しました。それから、すべてうまくいった。 –

0

はい、それはあなたがfiveMinuteButtonをクリックしたとき(すなわち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; 

     } 
    }); 
+0

私はそれを増やしたくない+ = 5。 1000回クリックしても5をcircuitLengthに格納したい。 –

+0

あなたが作成したコードをInitialzeUIButtons()に表示します。 –

0

あなたのコードだと思う確かonclickのボタン呼び出しか 正しいメイクで、あなたのonclickのボタンが

0

あなたのコードは間違いありません。アクティビティ内の変数を変更した場合は変更されたままになり、初期値に変更される可能性は3つあります。

  1. アクティビティが停止しました。
  2. アクティビティを再作成しました。
  3. 変数を手動で変更しました。あなたがここに

    言ったよう

私はログを置きます。それは一時的に値を格納するだけで、私は を再度呼び出してOnClickListenerの外部にログすると、値はnullになります。

私はこのようなことをしていると信じています。アプリ起動時に今onCreateがデフォルト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; 

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

あなたがログにnullを取得している明白であるように、nullです。

私はそれがはっきりしていることを望みます。ご質問がある場合はお気軽にお問い合わせください。

関連する問題