Spinner.setadapter(适配器)一直失败

时间:2011-03-21 09:51:06

标签: android

目标是在扩展视图中工作。不在onCreate 我很确定问题在我宣布时开始:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( context,...);

我曾尝试使用.createFromResource( this,...)但是甚至不会编译。 但程序运行正常,直到我使用setadapter函数。我一直在努力使这项工作在onCreate之外完成。

public class main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(new Piano(this));
    }

    private class Piano extends View {
        //keyboard array
        private ShapeDrawable []  keyboard;
        private int indx=0;
        Spinner spinner = (Spinner) findViewById(R.id.dbox);
        SurfaceView sandbx = (SurfaceView)findViewById(R.id.sandbox);



        public Piano(Context context){
            super(context);
            context.getSystemService(DROPBOX_SERVICE);

            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                    context, R.array.chord_list, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(new Listen()); 
}

3 个答案:

答案 0 :(得分:0)

为Spinner尝试此代码:

public class Spinner1 extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.spinner_1);

    Spinner s1 = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.colors, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s1.setAdapter(adapter);

}

}

您可以扩展活动..而不是扩展视图。

答案 1 :(得分:0)

尝试改为

ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(context, R.array.chord_list, android.R.layout.simple_spinner_item);

答案 2 :(得分:0)

将piano()构造函数内容放入onCreate方法或以其他方式调用onCreate方法中的钢琴视图。

每当初始化android组件时,你应该只调用活动生命周期方法。

无论您有钢琴视图(自定义视图)还是任何UI组件视图,您都应该在任何一个活动生命周期方法中调用它。或者你应该用XML调用它,如下所示:

     <com.packagename.PianoView 
    android:layout_width="fill_parent"
     .
     .
      />

如果你接受这个投票给我