可扩展字符串错误

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(使用前将#替换为@)

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

  • Firebase 管理 SDK Android

    在 Android 中初始化 Firebase Admin SDK 的代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedIns
  • 检测到设备正在振动?

    我使用下面的代码来振动设备 public void vibrator try Vibrator vibrator Vibrator getSystemService Context VIBRATOR SERVICE vibrator vib
  • 与 Admob 广告单元 ID 混淆

    我跟着tutorial https developers google com admob android quick start在我的应用程序中创建广告横幅 到目前为止 这有效 我可以看到测试广告 但是 本教程指示我在两个不同的位置使用两
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 无法在自定义 AOSP 上安装 Google Play 中的某些应用程序:项目不可用。理由:9

    我在尝试从 Google Play 安装某些应用程序时收到以下错误 LibraryUtils isAvailable not available restriction 9 DocUtils getAvailabilityRestricti
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 从 Firebase 数据库填充微调器

    public class MainActivity extends AppCompatActivity DatabaseReference reference Spinner areaSpinner ArrayList
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来

随机推荐

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

    我需要检查一个短字符串是否与子字符串列表匹配 目前 我这样做如下所示 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