我有一个奇怪的问题。我在xml中有2个预定义的微调器。但是,项目和相关的下拉项目在运行时呈现。
但是,以下2个语句提供了不同的布局结果。我不知道为什么结果是这样的。但主要区别在于getApplicationContext()
和this
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, getSrvNumList());
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_spinner_item, getSrvNumList());
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
答案 0 :(得分:0)
作为@MikeM。评论说,这是关于上下文的问题。希望以下答案可以帮助解决此问题的人。
使用Activity
上下文代替Application
上下文
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyActivity.this,
android.R.layout.simple_spinner_item, getSrvNumList());
否则,应用程序将获得不同的主题来呈现微调器。
答案 1 :(得分:0)
根据this post(查看第3章),我们可以考虑两种类型的上下文:UI-Context(例如getActivity()
,view.getContext()
...)和非UI -Context(例如getApplicationContext()
...)。
当膨胀视图时,让我们使用UI-Context来保持其应用程序主题。该规则是:
* Do you need to access UI related stuff? Use UI-Context.
* Otherwise, Use Non-UI Context.