将Android Spinner适配器设置为Spinner

21
我在我的安卓应用程序中使用eneter框架来处理通信; 问题是,当我尝试填充一个下拉框(spinner)时,将适配器设置为下拉框会引发未定义的异常。
这是代码:
public void populateSpinner(TypedResponseReceivedEventArgs<String> arg1){
    List<String> list = new ArrayList<String>();
    String listf = arg1.getResponseMessage();
    //sendToDebug(listf);
    StringTokenizer tokenizer = new StringTokenizer(listf,",");
    while(tokenizer.hasMoreElements()){
        list.add((String)tokenizer.nextElement());
    }
    //EditText text = (EditText)findViewById(R.id.number2EditText);
    //text.setText(list.size());
    //text.setText(listf);
    Spinner forfait = (Spinner)findViewById(R.id.forfaitsSpinner);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    forfait.setAdapter(adapter);
}

你能贴出你得到的异常吗? - Marco Acierno
你遇到了哪种类型的错误?出现在哪一行? - Piyush
2个回答

52

你正在下面的代码片段中传递this

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item,list);

不确定这段代码在哪个块或哪个类中,但请确保 this 指向 ActivityName.class 或者 上下文环境


1
这是一个活动,兄弟,我在一个事件被触发时调用的方法中填充了下拉列表框,这就是问题所在,将下拉列表框填充到doCreate()方法中解决了问题,谢谢! - khalil

0
很可能是因为您正在使用ArrayAdapter而不是SpinnerAdapterArrayAdapterSpinnerAdapter接口的间接实现者,而不是声明它实现该接口的实现者。检查未定义的异常。它可能告诉您setAdapter(ArrayAdapter)未定义于Spinner

4
您可以毫无疑问地在Spinner中使用ArrayAdapter先生。 - Rat-a-tat-a-tat Ratatouille
我同意这应该是可能的,但是如果没有完整的回溯信息,我们只能凭空猜测。 - Larry Schiefer
谢谢兄弟,我的问题是我想在触发事件时填充下拉列表,我修改了我的设计,在另一个活动的onCreate()方法中填充了下拉列表,并属于另一个布局,现在它可以工作了。谢谢! - khalil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接