可扩展字符串错误

2023-12-14

我试图在警报对话框中显示一些文本作为超链接。该过程的一部分要求我使用 SpannableString 来格式化一些文本。问题是我的应用程序在代码的 SpannableString 部分遇到运行时错误。

TextView Tv= (TextView) findViewById(R.id.textView3);
SpannableString s = new SpannableString("www.google.com");
Linkify.addLinks(s, Linkify.WEB_URLS);
Tv.setText(s);
Tv.setMovementMethod(LinkMovementMethod.getInstance());

我查看了 DDMS,错误显示为 Java.Lang.NullPointerException。有人经历过这个吗?我应该能够向 SpannableString 方法传递一个硬编码字符串。我不知道为什么会这样崩溃。

这是我的 java 文件中的 OnCreate 函数:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //System.out.println("+++++++++++++++++++++++");
    TextView Tv= (TextView) findViewById(R.id.textviewH);

    Tv.setText("GO!");
    //System.out.println("+++++++++++++++++++++++");        
    SpannableString s = new SpannableString("www.google.com");
    Linkify.addLinks(s, Linkify.WEB_URLS);
    Tv.setText(s);
    Tv.setMovementMethod(LinkMovementMethod.getInstance());


    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle("About T2M");
    dialog.setIcon(R.drawable.ic_launcher);
    dialog.setView(getLayoutInflater().inflate(R.layout.activity_about_t2m, null));
    dialog.setCancelable(false);
    dialog.setPositiveButton(android.R.string.ok,
        new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) 
    {
        dialog.cancel();
    }
}); 
    //System.out.println("+++++++++++++++++++++++");
    dialog.create();  
    dialog.show();


}

这是我的 XML 文件中的文本视图:

 <TextView
    android:id="@+id/textviewH"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView5"
    android:layout_alignLeft="@+id/textView2"
    android:autoLink="all"
    android:clickable="true"
    android:text="Humium"
    android:textSize="15sp" />

My Layout


好吧,我认为问题出在通货膨胀过程上。 看起来您正在尝试在膨胀布局之前访问 TextView。所以按Id查找视图不会找到任何东西,因为它将在活动布局中搜索。

这里的技巧是让你的自定义布局首先(以下是您可以执行的操作的示例:

    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    //Inflating the custom Layout
    View view = LayoutInflater.from(this).inflate(R.layout.activity_about_t2m, null);

    //Searching for the TextView in it
    TextView tv = (TextView)view.findViewById(R.id.textviewH);

    //Then making the links
    SpannableString s = new SpannableString("www.google.fr");
    Linkify.addLinks(s, Linkify.WEB_URLS);

    //Adding the text to the View and make the links clickable 
    tv.setText(s);
    tv.setMovementMethod(LinkMovementMethod.getInstance());

    //Finally applying the custom view we inflated (R.layout.activity_about_t2m) on the AlertDialog and ....
    dialog.setView(view);
    dialog.setTitle("About T2M");
    dialog.setIcon(R.drawable.ic_launcher);
    dialog.setCancelable(false);
    dialog.setPositiveButton(android.R.string.ok,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id)
                {
                    dialog.cancel();
                }
            } 
    );

Edit 1:我在这个例子中犯了一个错误……在你的例子中获取应用程序上下文()应该this(我在代码中进行了修复)

更多信息在这里:Android - Linkify 问题

Edit 2:好吧,现在应该可以理解了吧?

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

可扩展字符串错误 的相关文章

  • android - EditText 打字速度很慢

    我的 EditText 在打字时响应速度很慢 这种滞后现象足以让我找到解决方案 我做了一些研究 发现了一个 SO 线程输入文本时 EditText 滞后 https stackoverflow com questions 6173591 a
  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • doInBackground 运行时是否可以停止 asynctask?

    我正在 ActivityB Oncreate 中创建异步任务 在该任务中 我正在运行无限 while 循环doInBackground 当我转到上一个活动并再次回到该活动时 创建了另一个异步任务 我的问题现在是两个无限 while 循环正在
  • android 谷歌+登录定制

    我正在创建一个 Android 应用程序 现在我正在实现社交网络登录 Facebook 按钮很好 但 google 按钮的语言与 Facebook 不同 另外 它只说 登录 我想让它说 用谷歌登录 我是 android 编程的新手 看到我需
  • Mailgun POST /messages API 总是抛出 401 禁止

    我正在尝试使用改造库在 Android 中发送 Mailgun POST messages API 请求 以下是改装要求 HTTP POSThttps api key xxx v3 sandboxxxx messages https api
  • 如何编辑 gradle 依赖项

    我正在开发一个 android 项目 该项目在我的 gradle 文件中使用以下依赖项 compile com mapzen on the road 1 1 1 我想编辑其中一个文件 以添加一些缺少的功能并为该项目做出贡献 如何下载该项目并
  • 无法合并 Dex - Android Studio 3.0

    当我在稳定频道中将 Android Studio 更新到 3 0 并运行该项目时 我开始收到以下错误 Error Execution failed for task app transformDexArchiveWithExternalLi
  • 在 Android 中将应用程序上下文保存到静态变量是否安全?

    我知道在 Android 上使用静态变量是相当危险的 特别是当您将它们引用到活动时 但是 如果我有一个扩展 Application 的类 我们称此类为 App 引用此类的实例是否安全 如果是这样 任何其他类对应用程序上下文进行任何类型的引用
  • 如何检测 Google Play 上是否有我的应用程序的更新? [复制]

    这个问题在这里已经有答案了 有没有办法以编程方式检查 Google Play 上我的应用程序是否有更新 以便通知用户 我知道 android google play 有自动通知 但我想使用我自己的通知 弹出消息来更新可用性 有点像 Vibe
  • invalidateOptionsMenu 在片段中不起作用

    显示或隐藏项目ActionBar根据文本中是否有文本EditText or not 所以 我做了以下事情 public class NounSearch extends android app Fragment EditText seach
  • 如何覆盖日期选择器的高度和宽度以填充父布局

    我有一个活动包含一个日期选择器 我想设置DatePicker适合屏幕 我试过这个答案 https stackoverflow com questions 6674667 how to customize date pickers width
  • 有没有办法在Android上创建一个三角形按钮?

    有没有办法创建一个三角形的按钮 我知道我可以将三角形图像作为背景 但这将使三角形之外的区域可单击 有没有办法固定按钮角 X 和 Y 以便我可以将其变成三角形 您可以覆盖OnTouch http developer android com r
  • 更改android中禁用按钮的颜色

    有没有办法通过样式或其他形式更改 android 中禁用按钮的颜色 我目前有以下内容 可绘制 button default xml
  • 带有空白白屏的 WebView

    我在 DialogFragment 中有一个 webview 它使用以下方式显示文档和 PDF它可以进行几次尝试 但如果用户尝试频繁打开和关闭对话框 webview 将显示空白屏幕 我已经尝试了所有的线程link1 https stacko
  • Google Android Drive api 在已安装版本上登录失败

    我开发了一个使用 GoogleDrive api 的 Android 应用程序 当处于调试状态或运行调试版本时 应用程序 工作正常 并正确验证附加的谷歌帐户 等 当我构建发行版本时 使用我的签名密钥 并且 安装apk文件 当我运行时 Goo
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • Amazon IAP 不会调用 onPurchaseResponse

    我有一个 Android 应用程序 它使用 IAP 我正在发送PurchasingManager initiateGetUserIdRequest 并得到用户识别成功 in onGetUserIdResponse 得到回复后Purchasi
  • Android:获取最新意图

    如何获取发送到活动的最后一个意图 的文档onNewIntent 建议我需要做这样的事情 class MyActivity public void onNewIntent Intent intent setIntent intent reac
  • 绘制大位图时 nSyncAndDrawFrame 速度极慢

    我想用多个大位图优化视差滚动视图 在我的 Nexus 5 上 一切都很顺利 Traceview 转储如下所示 doFrame 方法大约需要 18 毫秒才能完成 但是 当使用我的 Nexus 7 或 Android 6 模拟器 Genymot
  • 尝试使用带有有效购买令牌的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

    当使用 Java Google Play Developer API 版本 3 并请求有效购买令牌的购买信息时 我收到以下异常 API 调用返回 400 Bad Request 响应以及以下消息 code 400 errors domain

随机推荐

  • 如何在字符串中搜索多个子字符串

    我需要检查一个短字符串是否与子字符串列表匹配 目前 我这样做如下所示 ideone 上的工作代码 bool ContainsMyWords const std wstring input if std wstring npos input
  • 将 Groovy Grails 服务注入 Java 类

    我有一个在 Groovy 中实现的 Grails 服务 我想将其注入到 Web 应用程序中的 Java 类中 我知道我可以通过 applicationContext getBean exampleService 获取 Java 中的 bea
  • Google Drive SDK - 驱动器范围

    我正在尝试使用这个 https developers google com drive android get started 这是适用于 Android 的 Google Drive SDK 我希望能够列出用户 Google 云端硬盘帐户
  • 赋值运算符重载被跳过/没有发生

    我正在尝试为某些工作创建一个库 并使用运算符重载进行赋值操作 假设 X 和 Y 是 重载的类的两个实例 A A operator A rhs A assign this rhs return this 当我这样做时 A z z x y x
  • 删除一列中的值等于另一列中的值的行

    我正在努力弄清楚如何从 pandas 数据框中删除行 其中两个指定的列在一行中具有相同的值 例如 在下面的示例中 我想删除第 2 列和第 4 列中具有重复值的行 例如 Column1 Column2 Column3 Column4 Pat
  • jquery 简单地对 div 内的 css 背景图像进行动画/旋转?

    我想知道是否有人可以帮助我 或者为我指出正确的方向 我正在寻找一个 jquery 片段 它将每隔 5 秒左右自动更改 div 的背景图像 我的初始背景图像是在 css 中设置的 但我不确定如何创建函数以使其在图像数组之间交换 我有 5 张图
  • 如何连接在线DB Xamarin? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 请告诉我如何从在线数据库 表 中检索数据 我刚刚创建了一个表在此输入链接描述 我制作了一个 SQL 数据库 谁能告诉我如何从中检索数据 强烈建议您不要直接从 Xamarin 连接
  • 在 Android 上使用 URL 会抛出 IOException:格式错误的 ipv6 地址

    我想将android模拟器上的数据发送到本地主机web 并得到一些结果 String temp http 10 0 2 2 8888 json rec user data user data friends friends URL url
  • 无法检索 Google 群组的成员,获取无效输入

    我从 Google 网上论坛主页创建了一个 Google 网上论坛 并添加了 5 个用户 我正在尝试使用Google Admin SDK API 用于检索我的群组中的成员列表但每当我尝试 API 来自API浏览器 我得到了 400 erro
  • Windows 窗体 PictureBox - 如何在窗体的特定区域中显示图像

    我使用以下代码在我的表单之一中打开并显示图像fileDialog private void btnExplorer Click object sender EventArgs e OpenFileDialog openFileDialog1
  • C++ 中的 include 与 python 中的导入

    python中的 import 相当于c 中的 include 吗 我可以像处理 Python 模块名称一样考虑 C 中的命名空间吗 include在 C 和 C 中是文本包含 import在Python中是very不同 根本没有文字包含
  • 使用 localStorage 缓存 Kendo UI DataSource 对象

    我正在将 Kendo UI ComboBox 与外部 XML 数据源一起使用 这是数据源代码 try var csDataSrc new kendo data DataSource transport read Data StateList
  • 处理现有记录时的 django 表单和 ModelMultipleChoiceField

    我正在尝试做一些我认为很常见的事情 但我真的不确定如何解决这个问题 我目前所做的 目前 我在表单上生成了一个复选框列表 使用 CheckboxSelectMultiple 该列表自动勾选 django 中所有用户列表中 成员 中的所有用户
  • JCombobox - 仅在值更改时执行动作侦听器

    我有一个JComboBox 并且我有一个附加的监听器 现在 每次用户从下拉列表中 选择 某些内容时 事件都会触发 即使他们只是重新选择了之前选择的值 如果组合框的选定值与选择之前不同 是否有任何方法可以仅触发事件 我想我可以将组合框的值存储
  • 在java程序中创建暂停或等待效果

    我正在用 Java 编写一个简单的钓鱼模拟器游戏 我希望每次施法后都有一个随机生成的等待时间 当等待结束时 会发生随机事件 一条鱼会被捕获 一条鱼会咬住你的鱼饵 等等 我听说过很多关于 Thread sleep 的坏事 并且想知道在这种情况
  • JAXB - 将动态生成的名称空间移动到文档根目录

    我有这个 POJO 封装了 Atom 条目的动态非嵌套元素 public class SimpleElement private Namespace namespace private String tagName private Stri
  • 如何在 Eclipse Swing 项目中使用 JavaFX

    我想在 Swing 应用程序中使用一些 JavaFX 组件 尤其是 JFXPanel 因为它支持 HTML 5 渲染 我的应用程序当前在 Eclipse 4 3 Kepler 中设置 并且我的计算机上安装了最新的 Java 7 JDK 本教
  • 在 Google Chrome 扩展程序中使用 Stripe 信用卡表单 - 无法避免“付款不安全?”

    我正在尝试在浏览器弹出窗口中获取一个简单的 Stripe 信用卡表单 以用于 google chrome 扩展 然而 在最新版本的 Chrome 中 信用卡表单始终附有 付款不安全 的消息 付款不安全 我已经在这里阅读了 google ch
  • Python 中的统计累加器

    统计累加器允许执行增量计算 例如 为了计算在任意时间给出的数字流的算术平均值 可以创建一个对象来跟踪当前给出的项目数 n以及它们的总和 sum 当一个人请求平均值时 该对象只是返回sum n 像这样的累加器允许您增量计算 即当给定新数字时
  • 可扩展字符串错误

    我试图在警报对话框中显示一些文本作为超链接 该过程的一部分要求我使用 SpannableString 来格式化一些文本 问题是我的应用程序在代码的 SpannableString 部分遇到运行时错误 TextView Tv TextView