1

私は Android 初心者であり、それを理解するために最善を尽くしています。私は楽しみのためだけに apk を作成しようとしています。物事をよりよく理解し、Google を何度も検索してもまだ解決していない問題があります。したがって、問題は、数値のみを許可する EditText があり、そこに数値を挿入することで文字列になり、そこから「パーセンテージ」として setProgress に挿入されることです。少なくとも、それが私がやりたいことです。その値を文字列に入れ、setProgress でパーセンテージとして読み取ろうとした後、Eclipse では許可されないためです。

The method setProgress(int) in the type ProgressBar is not applicable for the arguments (String)

コードは次のとおりです: *他に何も気にしないでください。テスト用です...

    package com.example.singur;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.ToggleButton;

public class MainActivity extends Activity implements OnClickListener
{

    Button button;
    ToggleButton toggle;
    TextView rateText;
    TextView textProgress;
    Switch legit;
    EditText edit;
    RatingBar rating;
    ProgressBar progress;
    int count = 0;
//  int value = 0;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        toggle = (ToggleButton) findViewById(R.id.toggle);
        rateText = (TextView) findViewById(R.id.rateText);
        textProgress = (TextView) findViewById(R.id.textProgress);
        legit = (Switch) findViewById(R.id.legit);
        edit = (EditText) findViewById(R.id.edit);
        rating = (RatingBar) findViewById(R.id.rating);
        progress = (ProgressBar) findViewById(R.id.progress);

        legit.setEnabled(false);
        edit.setEnabled(false);

        button.setOnClickListener(this);
        toggle.setOnClickListener(this);
        edit.setOnClickListener(this);
        //rating.setOnRatingBarChangeListener(this);
    }
    public void onClick(View v)
    {
        switch(v.getId())
        {
            case R.id.button:
                textProgress.setText("button clicked" + count + progress.getProgress());
                count++;
                progress.setProgress(count);
                break;
            case R.id.rating:
                break;
            case R.id.toggle:
                if(toggle.isChecked() == true)
                {
                    edit.setEnabled(true);
                    edit.setText("" + count);
                    //count++;
                    //progress.setProgress(count);
                    textProgress.setText("button clicked" + count + progress.getProgress());
                }else
                {
                    edit.setEnabled(false);
                    edit.setText("disabled but count = " + count);
                    //count++;
                    //progress.setProgress(count);
                    textProgress.setText("button clicked" + count + progress.getProgress());
                }
                count++;
                textProgress.setText("toggle:"+count);
                break;
            case R.id.edit:
                if(edit.isEnabled() == true)
                {
                    edit.setOnEditorActionListener(new OnEditorActionListener()
                    {
                        @Override
                        public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
                        {
                            if (actionId == EditorInfo.IME_ACTION_DONE)
                            {
                                // do your stuff here
                                String value = edit.getText().toString();
                                progress.setProgress(value.valueOf(value));
                            }
                            return false;
                        }
                    }); 
                }
        }
    }
}
4

1 に答える 1

1

String を int に変換する必要があります。エラーが示すように、setProgress()int のみを受け入れますが、EditText から取得する値は文字列です (文字列に数字のみを含めることができる場合でも)。

これを行う最も簡単な方法は、 を使用することですInteger.parseInt(String)

コードは次のようになります。

String value = edit.getText().toString();
progress.setProgress(Integer.parseInt(value));

また、文字列を整数として解析できない場合はInteger.parseInt()a がスローされることに注意してください。NumberFormatExceptionその例外を適切に処理してください。

于 2013-10-22T18:23:19.213 に答える