0

mg、g、マイクログラム、kg のアイテムを含むスピナーがあります。mg を選択した場合、2 番目のスピナーを mg と g の項目のみで更新します。しかし、if ロジックを使用すると、「タイプ ArrayAdapter のメソッド createFromResource(Context, int, int) は引数に適用できません」というエラーが発生します。

public class MyOnItemSelectedListener は OnItemSelectedListener を実装します{

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){
    String str = parent.getItemAtPosition(pos).toString();

    final TextView result = (TextView) findViewById(R.id.textView5);

    if (str.equals("mg")){
        Spinner spinner1 = (Spinner) findViewById(R.id.spinner2);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.units, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapter);
        //result.setText("testing");
    }
    else {
        result.setText("micrograms");
    }

    }

    @Override
    public void onNothingSelected(AdapterView parent){}
}
4

1 に答える 1

1

あなたの問題はこの行にあります:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.units, android.R.layout.simple_spinner_item);

ここでの最初の引数は Context を取ります。独自のクラスであるリスナーから呼び出しているためthis、アクティビティではなくリスナーを参照します。リスナー クラスのコンストラクターを介してアクティビティへの参照を渡し、thisそのアクティビティ コンテキストへの参照に置き換える必要があります。

于 2013-05-28T23:01:22.553 に答える