سؤال

I got this tracker screen that tracks users days of working out and workout sets completed. I would like to add ProgressBar or RatingBar that displays some sort of progress/rating by increase of my counter.

Lets say that 5 stars or full ProgressBar would be when counter2 reaches 300 (counter2 (workout sets completed)).

enter image description here

My current code:

@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;

    }

}

}

هل كانت مفيدة؟

المحلول

Lets say that 5 stars or full progressBar would be when counter2 reaches 300 (counter2 (workout sets completed))

You already set the correct progress for the ProgressBar but you also increment the newly set progress again(by the counter value) which will not show the proper results. In the onCreate method:

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

and in the listeners for the buttons:

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top