对于new Runnable(){}类型,方法getActivity()未定义

时间:2014-01-03 21:56:28

标签: java android spinner

我正在尝试用一个JSON对象填充一个Spinner,我将从一个安静的API中提取。

但我无法弄清楚如何让适配器为微调器工作。我尝试了getActivity()并尝试了this关键字。两个人都没有工作,我在Google上找不到任何人在这个环境中试图更新微调器的东西。

这是我正在使用的代码。 http://pastebin.com/bQWDHekB。当我getActivity()时,The method getActivity() is undefined for the type new Runnable(){}

但是当我使用this时会说The constructor ArrayAdapter<String>(new Runnable(){}, int, String[]) is undefined

- 编辑 - 根据Maartens的回答,我发现使用MainActivity.thisgetApplicationContext()效果更好。使用getApplicationContext()时,它倾向于使用不同的样式,并使我的微调器在白色背景上有白色文本。希望这可以帮助那些和我一样有麻烦的人。

1 个答案:

答案 0 :(得分:0)

嗯,这是因为Runnable没有getActivity()方法。

您可以通过替换

来获取对包装活动的引用
new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, array_spinner);

通过

new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, array_spinner);

或者,因为您只需要Context

new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, array_spinner);

相当于

new ArrayAdapter<String>(MainActivity.this.getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, array_spinner);