【发布时间】:2018-08-06 12:40:11
【问题描述】:
我有一个允许用户选择翻译的 android 微调器。我可以点击微调器,它会显示一个包含可用翻译的列表,但是当我在列表中选择一个项目时,它不会出现在微调器中,也不会调用 onItemSelected 方法。
这里是微调器的 xml 代码:
<Spinner
android:id="@+id/trans_list"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toRightOf="@+id/chap_list"
android:layout_weight="1" />
这里是启动微调器的相关代码。 (编辑)这段代码是从 Fragment 类内部运行的,而不是从我的 MainActivity 类中运行的:
trans_spinner = v.findViewById(R.id.trans_list);
ArrayAdapter<String> adapter = new ArrayAdapter<>(v.getContext(), android.R.layout.simple_spinner_dropdown_item, translations);
trans_spinner.setAdapter(adapter);
trans_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String translation = trans_spinner.getItemAtPosition(trans_spinner.getSelectedItemPosition()).toString();
Log.d("trans", translation);
Toast.makeText(view.getContext(), translation, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.d("test", "1");
}
});
trans_spinner.setSelection(1);
当我选择一个项目时,不会调用 onItemSelected() 或 onNothingSelected() 方法。我发现这个页面描述了一个与我的问题非常相似的问题: Android Spinner will not launch OnItemSelected and current selected item is not displayed in Spinner 但是,用户没有针对他们的问题提出明确的解决方案,因此对我没有多大帮助。
我不确定它是否相关,但微调器中的项目取自在线网页,该网页提供 JSON 数据来填充微调器。这似乎有效,因为选项确实出现在微调器列表中。问题是,在选择其中一个时,微调器显示为空,并且侦听器不执行任何操作。
【问题讨论】:
-
你使用的是片段还是活动??
-
我正在使用片段