java - 从 Set 获取对象数组的问题在安卓中
问题描述
你觉得这段代码有什么问题吗?函数执行时出现以下错误java.lang.NullPointerException
:尝试java.lang.Object[] java.util.Set.toArray()
在空对象引用上调用接口方法。我在 Android 7.0 中运行它。
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import java.util.Locale;
import java.util.Set;
import java.util.Arrays;
import android.content.Context;
public static String GetLanguages(Object objcon) {
Context context = (Context) objcon;
TextToSpeech tts;
tts = new TextToSpeech(context, new OnInitListener(){
@Override
public void onInit(int status) {
};
});
Set<Locale> loc = tts.getAvailableLanguages();
Object[] objloc = loc.toArray();
return Arrays.toString(objloc);
};
解决方案
你得到空值,因为TextToSpeech
需要时间来初始化。这就是为什么您必须OnInitListener
在初始化期间提供实现的原因。
tts = new TextToSpeech(context, new TextToSpeech.OnInitListener(){
@Override
public void onInit(int status) {
// Now you can use tts
Set<Locale> loc = tts.getAvailableLanguages();
Object[] objloc = loc.toArray();
};
});
该方法需要使用 TextToSpeech 作为类变量,因此您需要某种回调,以从GetLanguages
方法中获取结果。
推荐阅读
- laravel - 迁移:创建新表时列已存在错误
- r - 在 R 列的特定条目中查找百分比
- azure-data-factory - 无法从日志分析中获取与 azure 数据工厂映射数据流相关的日志
- python - ValueError:无法将输入数组从形状(0,3,3)广播到形状(441,3,3)
- python-3.x - 排序字典由列表组成
- mysql - 如果 B 不包含特定值,如何从表 A 和 B 中删除记录
- java - 如何使用 Selenium 和 Java 从 https://www.amazon.com 内的搜索结果摘要中的 73 个结果中的文本 1-16 中提取文本 73
- c# - 用 C# 编写代码时,Visual Studio 2015 冻结
- javascript - 点击
- from dropdown 不会从所述点击中产生预期的行为
- apache - Apache mod_substitute 不适用于 Javascript