【问题标题】:Android, spinner item disappeared after clicking on other spinnerAndroid,单击其他微调器后微调器项目消失
【发布时间】:2015-11-10 13:07:54
【问题描述】:

场景:假设片段中有 2 个微调器,称为微调器 ab

旋转器a 包含:狗猫大象

Spinner b 包含:micky、minny、moe

我的问题是:当用户使用应用程序并单击 Spinner a 并选择 elephant 时,Spinner b 选项中的 mickyminny 选项是否会消失而只离开 @ 987654330@作为选项?

最好的方法是什么? (不使用任何数据库)

xml:

<Spinner 
android:id="@+id/spinner_a"
android:entries="@array/value_a"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

<Spinner 
android:id="@+id/spinner_b"
android:entries="@array/value_b"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

字符串值:

<resources>
<string-array name="value_a">
    <item>dog</item>
    <item>cat</item>
    <item>Elephant</item>
    </string-array>
<string-array name="value_b">
    <item>micky</item>
    <item>minny</item>
    <item>moe</item>
</string-array>

java:

package...
import....
public class testing123 extends Fragment{

    final Spinner a123 = (Spinner) getView().findViewById(R.id.spinner_a);
    final Spinner b123 = (Spinner) getView().findViewById(R.id.spinner_b);

    final String ax = a123.getSelectedItem().toString();
    final String bx = b123.getSelectedItem().toString();

    if (ax.equals("elephant")) { 
     //what is the best way to do it?
    }else{}
}

【问题讨论】:

    标签: java android android-studio fragment spinner


    【解决方案1】:

    是的,你可以,但不能按照你的方式。 对于 spinner a 来说没问题,但对于 b 你应该从 Java 代码动态地管理它。 将监听器添加到微调器 A 并根据选定的项目 a 修改微调器 b 的字符串数组。

    听众:

    Spinner spinner_a = (Spinner) findViewById(R.id.spinner_a);
    spinner_a.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    // retrieve selected item
                    String spinner_a_choice = parent.getItemAtPosition(position).toString();
                    // elaborate and set here your spinner b with its own adapter
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                    // Something else
                }
            });
    

    如何将适配器添加到微调器(您必须对其进行操作):

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

    【讨论】:

    • 对不起,我不是很好,因为我正在使用片段,我应该用什么来更改 ArrayAdapter
    • getActivity().getApplicationContext(); 但要小心,因为如果片段已分离,它将返回 null
    • 试过你的建议,得到空指针异常错误,这里是 logcat:[link] (textuploader.com/5oknv)
    • 这是因为您的片段已被分离。对不起,但我不知道如何帮助你解决这个问题。我从来没有在没有活动的情况下工作过。如果您找到解决方案,我的代码将解决您的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2017-04-01
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多