1

ユーザーのワークアウトの日数とワークアウト セットの完了を追跡するこのトラッカー画面を入手しました。カウンターの増加によって何らかの進行状況/評価を追加ProgressBarまたは表示したいと思います。RatingBar

ProgressBarカウンター 2 が 300 (カウンター 2 (ワークアウト セットの完了)) に達したときが5 つ星または満点であるとします。

ここに画像の説明を入力

私の現在のコード:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    a = new AlphaAnimation(1, 0);
    a.setDuration(120);

    if (savedInstanceState == null) {
        counter1 = 0;
        counter2 = 0;
    }
    setContentView(R.layout.tracker);

    counter1 = 0;
    counter2 = 0;

    add1 = (Button) findViewById(R.id.baddday);
    sub1 = (Button) findViewById(R.id.bsubday);
    add2 = (Button) findViewById(R.id.baddset);
    sub2 = (Button) findViewById(R.id.bsubset);
    list = (Button) findViewById(R.id.blist);
    bar = (ProgressBar) findViewById(R.id.progressBar1);

    display1 = (TextView) findViewById(R.id.tvDisplayDays);
    display2 = (TextView) findViewById(R.id.tvDisplaySets);
    Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/tele.ttf");
    display1.setTypeface(tf);
    display2.setTypeface(tf);

    add1.setOnClickListener(this);
    sub1.setOnClickListener(this);
    add2.setOnClickListener(this);
    sub2.setOnClickListener(this);
    list.setOnClickListener(this);

    SharedPreferences setting = getSharedPreferences("countersetting", 0);
    counter1 = setting.getInt("countervalue1", 0);
    counter2 = setting.getInt("countervalue2", 0);
    display1.setText("" + counter1);
    display2.setText("" + counter2);
            bar.setProgress(counter2);
}

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putString("YourTextViewTextIdentifier1", display1
            .getText().toString());
    savedInstanceState.putString("YourTextViewTextIdentifier2", display2
            .getText().toString());
    savedInstanceState.putInt("int", counter1);
    savedInstanceState.putInt("int", counter2);
    super.onSaveInstanceState(savedInstanceState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    display1.setText(savedInstanceState
            .getString("YourTextViewTextIdentifier1"));
    display2.setText(savedInstanceState
            .getString("YourTextViewTextIdentifier2"));
    counter1 = savedInstanceState.getInt("int");
    counter2 = savedInstanceState.getInt("int");
}

@Override
protected void onStop() {
    super.onStop();

    SharedPreferences setting = getSharedPreferences("countersetting", 0);
    SharedPreferences.Editor editor = setting.edit();
    editor.putInt("countervalue1", counter1);
    editor.putInt("countervalue2", counter2);
    editor.commit();
}

@Override
public void onClick(View view) {
    // TODO Auto-generated method stub
    switch (view.getId()) {

    case R.id.baddday:
        counter1 += 1;
        display1.setText("" + counter1);
        add1.startAnimation(a);
        break;
    case R.id.bsubday:
        counter1 -= 1;
        display1.setText("" + counter1);
        sub1.startAnimation(a);
        break;
    case R.id.baddset:
        counter2 += 1;
        display2.setText("" + counter2);
        add2.startAnimation(a);

        bar.setProgress(counter2);
        bar.setMax(300);
        bar.incrementProgressBy(counter2);
        bar.getProgress();



        break;
    case R.id.bsubset:
        counter2 -= 1;
        display2.setText("" + counter2);
        sub2.startAnimation(a);
        bar.setProgress(counter2);
        bar.incrementProgressBy(counter2);
        bar.getProgress();

        break;
    case R.id.blist:
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                Intent i = new Intent(Tracker.this, List.class);
                startActivity(i);
            }
        }, 150);
        list.startAnimation(a);
        break;

    }

}

}

4

1 に答える 1

0

カウンター 2 が 300 (カウンター 2 (ワークアウト セットの完了)) に達したとき、5 つ星または完全なプログレス バーになるとします。

の正しい進行状況を既に設定してProgressBarいますが、新しく設定された進行状況を (カウンター値で) 再度インクリメントすると、適切な結果が表示されません。onCreateメソッド内:

bar.setMax(300);
bar.setProgress(counter2); // the initial stored value

ボタンのリスナーでは次のようになります。

case R.id.baddset:
    counter2 += 1;
    display2.setText(String.valueOf(counter2));
    add2.startAnimation(a);
    bar.setProgress(counter2);
    break;
case R.id.bsubset:
    counter2 -= 1;
    display2.setText(String.valueOf(counter2));
    sub2.startAnimation(a);
    bar.setProgress(counter2);
    break;
于 2013-03-19T13:10:29.183 に答える