0

さて、私はAndroidアプリに取り組んでおり、スピナーを埋め込みました...合計4つのスピナーがあり、スピナーが文字列からオプションを読み取る場合、選択用に定義された番号があることを学びました(つまり、最初のオプションは「0」、次は「1」など)

私はスピナーのために次のコードを持っています

        Spinner a = (Spinner) findViewById(R.id.spinner1);
    a.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView adapter, View v, int a,
                long lng) {
            // do something here
            Toast.makeText(adapter.getContext(), "You selected: " + a,
                    Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView arg0) {
            // do something else
        }
    });

もう1つは、int「b」を使用します

しかし、後で同じクラスで、いくつかの数学を使用してe = a、bを取得したいと思います(つまり、a=6とb=5 e = 65、またはa=4とb=3 e = 43の場合)これは簡単に実行できます実行することによって

int e=a*10+b;

問題は、ボタンを押したときにこれを表示したいので、次のコードがあります

public void Calc(View v) {
    int e = a * 10 + b;
    Toast.makeText(this, "Value: " + e, Toast.LENGTH_LONG).show();
}

しかし、「a」と「b」を変数に解決できません」というエラーが発生します。これはなぜですか。また、これらの変数を読み取ることができるボタンを作成するにはどうすればよいですか。

4

1 に答える 1

0

これは範囲の問題です。メソッドで宣言aしたため、メソッドの外部ではアクセスできません。スピナーをクラスメンバーとして宣言し、メソッドでのみ割り当てます。

クラススコープ:

Spinner a;

メソッドで:

a = (Spinner) findViewById(R.id.spinner1);

それで:

public void Calc(View v) {
    int itemA, itemB;
    itemA = a.getSelectedItemPosition();
    itemB = b.getSelectedItemPosition();
    int e = itemA * 10 + itemB;
    Toast.makeText(this, "Value: " + e, Toast.LENGTH_LONG).show();
}
于 2012-04-05T13:25:37.477 に答える