android:Spinner的问题

时间:2011-04-07 13:17:37

标签: android spinner

在我的main.xml中,我有一个Spinner(以及其他组件)。

            <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/SelProtocol_main" android:id="@+id/textView1_main"></TextView>
        <Spinner android:layout_width="wrap_content" android:layout_weight="1" 
        android:layout_height="wrap_content" android:id="@+id/cmb_protocol_main"
        android:drawSelectorOnTop="true"></Spinner>

在res / values中,我有protocol_array.xml,其中包含string-array name =“protocols”。

在我的Activity中,在onCreate调用的方法中,

        prtlSpinner = (Spinner)findViewById(R.id.cmb_protocol_main);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.protocols, R.layout.main);   // HERE I GET ERROR
    adapter.setDropDownViewResource(R.layout.main);
    prtlSpinner.setAdapter(adapter);
    /*
    prtlSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            selectedProtocolIndex = prtlSpinner.getSelectedItemPosition();
            selectedProtocol = prtlSpinner.getSelectedItem().toString();
            Log.i(TAG, "prtlSpinner tem Selected = " + selectedProtocol + " Index = " + selectedProtocolIndex);             
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            selectedProtocolIndex = -1;
            selectedProtocol = "";
        }

    });
    */

我得到的例外:需要TextView。我尝试了不同的方法,但没有任何效果。使用上面的代码,我得到NullPointerException.Spinner代码使用http://www.brighthub.com/mobile/google-android/articles/46782.aspx编码。我也无法从文档中找出答案。

任何人都可以帮助我哪里出错了吗?为什么我们需要TextView来填充Dropbox? Te侦听器代码是否正确 - 我只需要在选择时设置变量,使用所选项目的索引和文本!我无法与Spinner相处。任何帮助,指导都非常感谢。

由于

2 个答案:

答案 0 :(得分:1)

你的main.xml包含2个成员,一个textview和一个Spinner,而arrayAdapter需要一个textview。因此,您可以使用android.R.layout.simple_spinner_item或尝试传递R.id.textView1_main

答案 1 :(得分:0)

哦,最后,努力了。 main.xml就是这样。在java类中,

        ArrayAdapter<CharSequence> adapter = null;
    adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, array_spinner);    
    prtlSpinner.setAdapter(adapter);        
    prtlSpinner.setOnItemSelectedListener(this);

就是这样。 array_spinner是类本身的String []。一切顺利,工作顺利。不需要任何其他布局。

感谢您试图帮助我。 @frieza,我非常感谢您的支持与支持指导。非常感谢。