在 CustomListview 中使用 TTS 时出现 NullPointerException

2024-03-27

我有自定义列表视图,其中包含内容和 TTS 选项,在使用 TTS 时会抛出空指针异常,Listview 也不会显示我的应用程序已停止。Logcat 中显示错误。

应用程序适配器.java

public class ApplicationAdapter extends ArrayAdapter<Application> implements
TextToSpeech.OnInitListener{
    private List<Application> items;
    private LayoutInflater inflator;
    private MainActivity activity;

    private ProgressDialog dialog;
    public TextToSpeech tts;
    public ImageButton btnaudioprayer;
   public TextView text1;

    ArrayAdapter<String> adapter;

    public ApplicationAdapter(MainActivity context, List<Application> items){
        super(context, R.layout.activity_row, items);
        this.items = items;

        inflator = LayoutInflater.from(getContext());
        activity=context;


    }

    @Override
    public int getCount(){
        return items.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        ViewHolder holder = null;

        tts = new TextToSpeech(activity, ApplicationAdapter.this);


        //View v = convertView;
        if ( convertView == null ){ 
            convertView = inflator.inflate(R.layout.activity_row, null);
            holder = new ViewHolder();
            holder.text2 = (TextView) convertView.findViewById(R.id.text2);
            holder.text1 = (TextView) convertView.findViewById(R.id.text1);
            holder.count = (TextView) convertView.findViewById(R.id.count); 
            holder.pray  = (Button) convertView.findViewById(R.id.pray);
            holder.chk = (CheckBox) convertView.findViewById(R.id.checkbox);
            holder.btnSpeak = (ImageButton) convertView.findViewById(R.id.btnaudioprayer);

            convertView.setTag(holder);
        }else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton view,
                    boolean isChecked) {
                int getPosition = (Integer) view.getTag();
                items.get(getPosition).setSelected(view.isChecked());

            }
        });

        holder.pray.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int getPosition= (Integer)v.getTag();
                StringBuffer sb1 = new StringBuffer();
                sb1.append("ID :");
                sb1.append(Html.fromHtml(""+items.get(getPosition).getId()));
                sb1.append("\n");
                activity.praydata(items.get(getPosition).getId());

            }


        });


         holder.btnSpeak.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View V) {


                   speakOut();
                }

            }); 

        Application app = items.get(position);
        holder.chk.setTag(position);
        holder.pray.setTag(position);
        holder.text2.setText(Html.fromHtml(app.getTitle()));
        holder.text1.setText(Html.fromHtml(app.getContent()));
        holder.count.setText(app.getCount()+"");
        holder.chk.setChecked(app.isSelected());

        return convertView;
    }
    static class ViewHolder {
        public TextView text2;
        public TextView text1;
        public TextView count;
        public CheckBox chk;
        public Button pray;
        public ImageButton btnSpeak;
        private TextToSpeech tts;
    }
    @Override
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS) {

            int result = tts.setLanguage(Locale.US);

            if (result == TextToSpeech.LANG_MISSING_DATA
                    || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                Log.e("TTS", "This Language is not supported");
            } else {

                speakOut();
            }

        } else {
            Log.e("TTS", "Initilization Failed!");
        }


    }

    private void speakOut() {

            String text = text1.getText().toString();

            tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
        }

在这里我也提到我的 logcat 错误。在我的 logcat 错误中,它显示了这一行的错误String text = text1.getText().toString();。它正在投掷NullPointerException它还显示 log.e 文件。它没有运行speakout() method.

07-18 12:17:11.456: E/TTS(2314): This Language is not supported
07-18 12:17:11.456: I/TextToSpeech(2314): Connected to ComponentInfo{com.svox.pico/com.svox.pico.PicoService}
07-18 12:17:11.586: D/AndroidRuntime(2314): Shutting down VM
07-18 12:17:11.586: W/dalvikvm(2314): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
07-18 12:17:11.597: E/AndroidRuntime(2314): FATAL EXCEPTION: main
07-18 12:17:11.597: E/AndroidRuntime(2314): java.lang.NullPointerException
07-18 12:17:11.597: E/AndroidRuntime(2314):     at com.example.jsonandroid.ApplicationAdapter.speakOut(ApplicationAdapter.java:182)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at com.example.jsonandroid.ApplicationAdapter.onInit(ApplicationAdapter.java:168)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.speech.tts.TextToSpeech.dispatchOnInit(TextToSpeech.java:640)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.speech.tts.TextToSpeech.access$1000(TextToSpeech.java:52)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.speech.tts.TextToSpeech$Connection.onServiceConnected(TextToSpeech.java:1297)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1101)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1118)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.os.Handler.handleCallback(Handler.java:725)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.os.Looper.loop(Looper.java:137)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at android.app.ActivityThread.main(ActivityThread.java:5039)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at java.lang.reflect.Method.invokeNative(Native Method)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at java.lang.reflect.Method.invoke(Method.java:511)
07-18 12:17:11.597: E/AndroidRuntime(2314):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

在我的自定义列表视图中,我有文本和 TTS 按钮,单击按钮时它必须播放内容的音频。


你的变量text1未初始化,但已声明,因此执行text1.getText(),你本质上是在尝试getText() from null.

也许你想要的是holder.text1 (holder来自ViewHolder)?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CustomListview 中使用 TTS 时出现 NullPointerException 的相关文章

  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 加快 ImageView 中的缩放功能

    我目前正在处理非常大的图像 7 10mb 由于多种原因无法调整大小或压缩 现在 我们的想法是在自定义 ImageView 中显示它们 使用户能够进行双击缩放 捏合缩放等 我使用这个库来完成这项工作 https github com Mike
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 在 AppAuth-Android 中注销

    我有一个用JAVA开发的Android应用程序 对于这个应用程序 我使用的是身份服务器4 https github com IdentityServer IdentityServer4作为我的 STS 一切正常 但我找不到任何注销的实现Ap
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • jar 中的 apklib 有什么优点?

    我正在关注这个问题 https stackoverflow com questions 6059502 whats the difference between apklib and jar files但它并没有完全回答我的问题 jar 中
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 如何从 Facebook 邀请好友到 Android 应用程序? - 给出错误

    我正在开发一个 Android 应用程序 我正在努力将 邀请朋友 功能添加到我的应用程序中 它转到我的AppLinkUrl成功但显示错误 我的清单代码如下
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • 不显示 WRITE_EXTERNAL_STORAGE 的权限对话框

    I want to download a file using DownloadManager And DownloadManager wants to WRITE EXTERNAL STORAGE permission I have in
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • 在 Android 中上传文件出现内存不足错误

    我的上传代码如下 String end r n String twoHyphens String boundary try URL url new URL ActionUrl HttpURLConnection con HttpURLCon
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Android 中的 Google Places API - 适用于个人用户的 API_KEY

    我已经浏览了与在 Android 应用程序中使用 Places API 相关的 Android 文档和其他博客 到处都建议使用 API KEY 来调用 REST 服务 API KEY 在整个项目 应用程序中都是相同的 每天的请求数限制为 1
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • QGridLayout 与 PlotWidget-pyqtgraph

    我有 3 个PlotWidget http www pyqtgraph org documentation widgets plotwidget html 来自pyqtgraph图书馆 obj1 obj2 and obj3 我尝试将其插入到
  • ember-simple-auth,验收测试和等待异步操作

    努力应对验收测试 从基本登录测试开始 import test from qunit import moduleForAcceptance from static tests helpers module for acceptance mod
  • 如何在 python selenium 中通过类名及其文本定位元素

    您好 我正在尝试通过元素的类名及其包含的文本来定位元素 div class fc day number 15 div 有一堆fc day number在具有不同值的页面上 我需要具有例如 15 的那个 I do driver find el
  • 将 numpy ndarray 写入图像

    我正在尝试在 Python 中读取二进制文件 8 位 RGB 元组 对其进行一些转换 然后将其写入为 png 图像 我正在执行以下操作 typeinfo np dtype gt i1 read single bytes data np fr
  • 在 PHP 中使用自动加载类时是否存在性能下降?

    目前 我通过在网站的每个页面上包含 all inc php 文件来加载所有类 然后该文件继续包含我将在整个网站上使用的所有配置 类 函数等 我的问题是 我经常使用仅与网站的某些页面 部分相关的类 因此我经常在页面开头包含一堆不会使用的类 显
  • 更改 imshow 来源

    我有一个包含 3 列的数据表 我想根据前两列在彩色二维图中绘制第三列 例如对于下表 即 4 0 4 0 0 313660827978 4 0 5 0 0 365348418405 4 0 6 0 0 423733120134 5 0 4 0
  • 如何在 Toad 中打开表名称自动完成功能?

    我使用的是 Toad 版本 11 0 0 116 当我开始输入表时 我没有获得默认的表名选项 如何开启自动完成功能 Pressing Ctrl should show you a list of available tables 例如输入
  • Jenkins 构建步骤在“npm install ”上失败

    Jenkins 新手 我正在 Jenkins 中设置我们的构建 设置构建步骤来运行 nodejs 脚本 使用 Sencha Touch 2 将构建的应用程序引入本机 iOS 应用程序的脚本 Nodejs 脚本需要扳手库 Jenkins 用户
  • OSX Lion 上 Java 应用程序的全屏功能

    如何在 Java 应用程序中 本地 实现 OSX Lion 的全屏功能 目前给出的答案包含了一种实现全屏功能的好方法 我读到 Eclipse 可能能够使用 Lion 的 本机 全屏功能 这就是我要问的 我在 Apple 的 Java 发行说
  • “npx react-native run-android”与“react-native run-android”有什么区别

    有什么区别npx 反应本机运行 android vs 反应本机运行 Android 目前有两个 CLI react native community cli 由react native直接使用的 这使得它成为您项目的传递依赖 react n
  • React-native 中 Stack.Screens 之间的 Stack.Navigator 淡入淡出过渡?

    如何在 React native 中为 Stacked Screes 添加过渡效果
  • 如何在使用基于类的视图注册后立即登录用户?

    我正在一个销售图像的网站上工作 我正在尝试找到一种方法 以便用户可以login注册后使用class基于视图 我已经使用基于函数的视图完成了它 但我想基于类进行它 因为它需要更少的代码 下面是与function基于的观点 My models
  • 为什么使用标志+位掩码而不是一系列布尔值?

    考虑到我有一个对象可能处于一个或多个真 假状态 我一直有点模糊为什么程序员经常使用标志 位掩码而不是只使用几个布尔值 一切都在 NET 框架上 不确定这是否是最好的示例 但 NET 框架具有以下内容 public enum AnchorSt
  • 使用 FCM 服务离线注销?

    通知消息有公共和私有两种类型 使用此应用程序的任何人都可以看到公共消息 私人消息只能由一个用户看到 这些私人消息可能包含一些机密信息 在iOS上实现这个场景时 设备的 FCM 令牌针对每个应用程序实例 即 在应用程序重新安装时 用户可能会获
  • 在传递函数指针时是否应该转发有关 noexcept-ness 的知识?

    我写了下面的代码来测试noexcept跨函数调用的传播 似乎它并不像我想象的那样工作 在 GCC 4 7 2 中 可以有效地测试函数是否被noexcept仅直接或作为模板专业化参数传递时 但not当作为参数传递给模板化函数时 或者作为函数指
  • ICollection - 获取单个值

    从 ICollection 获取值的最佳方式是什么 除此之外 我们知道该集合是空的 您可以使用 LINQ 来实现此目的 var foo myICollection OfType
  • -canOpenURL:URL 失败:“spotify:” - 错误:“(null)”

    不确定这是否属实 但从我读到的内容来看 人们说这个问题仅发生在 Xcode 模拟器上 因此您必须在实际设备上进行测试 问题是我当前的服务器是本地节点服务器http localhost 3000 并且我的iOS设备无法访问该服务器 1 有没有
  • 测试终结器和 IDisposable

    问题是如何测试调用 Finalize 时对象释放资源的事实 该类的代码 public class TestClass IDisposable public bool HasBeenDisposed get private set publi
  • 澄清比较不同类型的对象

    以下句子让我感到困惑 来自 python org 上的 Guido 教程 请注意 比较对象 不同类型是合法的 结果 是确定性的但任意的 类型按其名称排序 因此 列表总是小于 字符串 字符串总是较小 比元组等 比元组等 这意味着对于 a 90
  • 在 CustomListview 中使用 TTS 时出现 NullPointerException

    我有自定义列表视图 其中包含内容和 TTS 选项 在使用 TTS 时会抛出空指针异常 Listview 也不会显示我的应用程序已停止 Logcat 中显示错误 应用程序适配器 java public class ApplicationAda