Android开发:如何关联按钮与Spinner?代码标识无法解析求助
解决Spinner字符串无法解析的问题
看起来你遇到的问题是代码里的字符串字面量"Teste1"和"Teste2"无法被解析,我来帮你排查下可能的原因和解决办法:
可能的原因及修复方案
1. 代码放置的位置不正确
如果你的这段代码是直接写在Activity类的根级别(不是任何方法内部,比如onCreate()外面),那会导致变量初始化的上下文不对,Android无法正确解析这些字符串。
修复办法:把这段代码移到onCreate()方法内部,确保是在Activity初始化的时候执行:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout_name); // 记得替换成你的布局文件名 // 把Spinner相关代码放在这里 Spinner merendas; String[] morfes = {"Teste1","Teste2"}; ArrayAdapter<String> adapter; merendas = (Spinner)findViewById(R.id.merendas); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, morfes); merendas.setAdapter(adapter); // 别忘了设置适配器到Spinner上! // 你的DrawerLayout代码... }
2. Android Studio缓存问题
有时候IDE的缓存会导致错误提示,即使代码本身是正确的。
修复办法:
- 点击菜单栏的
File->Invalidate Caches...,然后选择Invalidate and Restart重启Android Studio。 - 也可以尝试
Build->Clean Project,然后Build->Rebuild Project。
3. 推荐的最佳实践(避免类似问题)
在Android开发中,最好把字符串资源放在res/values/strings.xml里,而不是硬编码在代码中,这样不仅便于多语言适配,也能减少这类解析问题:
- 在
strings.xml里添加:
<string-array name="morfes_list"> <item>Teste1</item> <item>Teste2</item> </string-array>
- 然后在代码中这样使用:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.morfes_list, android.R.layout.simple_list_item_1); merendas.setAdapter(adapter);
另外,你原来的代码里还缺少了merendas.setAdapter(adapter);这一步,别忘了把适配器设置给Spinner,不然Spinner也不会显示选项哦!
内容的提问来源于stack exchange,提问作者Skwead
相关产品推荐
相关产品推荐

