提问者:小点点

如何在android studio中将字符串数组资源传递给Java类


我正在android工作室学习输入控件。 我在Strings.XML中使用string-array XML标记在旋转器中显示元素。 当使用r.array.phnLabels时,在Java类中传递参数时,ide显示错误,并且在运行代码时,应用程序在虚拟电话中一直停止。 下面是我的源代码和资源文件。

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Spinner spinner = (Spinner)findViewById(R.id.spinner);
        if(spinner != null)
            spinner.setOnItemClickListener((AdapterView.OnItemClickListener) this);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.phnLabels,android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        if(spinner != null)
            spinner.setAdapter(adapter);
    }

下面是string.xml文件

<resources>
    <string name="app_name">Input Controls</string>
    <string-array name="phnLabels">
        <item>Work</item>
        <item>Home</item>
        <item>Mobile</item>
    </string-array>
</resources>

下面是旋转器的布局视图组件

 <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/spinner"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginTop="150dp"
        android:layout_marginLeft="298dp"/>

共1个答案

匿名用户

您可以将以下内容传递到布局XML文件中:

<Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:entries="@array/phnLabels"
    />

也可以使用以下方法在Java类中获取字符串数组:

String[] albums = getResources().getStringArray(R.array.phnLabels);

在android类中设置适配器,如:

 List<String> albumsList = Arrays.asList(albums);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
                (this, android.R.layout.simple_spinner_item,
               albumsList); //selected item will look like a spinner set from XML
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout
                                                         .simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerArrayAdapter);

让我知道它是否有效。