显示/隐藏 ImageView 可见性时 Android 应用程序崩溃

2024-02-22

我一直在尝试创建我的第一个 Android 应用程序,是的...遇到了应用程序崩溃...

我的片段(主)中有两个 ImageView,在相对布局中将 imageview 1 与 imageview2 重叠。我想做的是,如果有互联网连接,应该会显示 imageview1(而不是 imageview 2)。如果没有互联网连接,反之亦然。根据教程,我创建了一个单独的类来检测连接:

   package com.mypackage.myapp;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class ConnectionDetector {

    private Context _context;

    public ConnectionDetector(Context context){
        this._context = context;
    }

    public boolean isConnectingToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null)
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null)
                  for (int i = 0; i < info.length; i++)
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }

          }
          return false;
    }
}

并在我的 mainactivity.class 中调用该类,使用布尔变量为两个连接实例(连接/断开连接)创建一个 if 语句...最后,我在 onCreate() 的 if 语句中对每个 ImageView 使用 setVisibility() 。这是代码:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    } 
    Intent cd = getIntent();
    ConnectionDetector cdr = new ConnectionDetector(getApplicationContext());
    boolean isInternetPresent = cdr.isConnectingToInternet();
    ImageView glss2 = (ImageView)findViewById(R.id.glass2);
    ImageView glss1 = (ImageView) findViewById(R.id.glass1);
    if (isInternetPresent) {
        glss1.setVisibility(View.VISIBLE);
        glss2.setVisibility(View.GONE);
    } else {
       glss1.setVisibility(View.GONE);
       glss2.setVisibility(View.VISIBLE);
    }
}

另外,如果你想要我的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/backrepeatlinen"
tools:context="com.mypackage.myapp.MainActivity$PlaceholderFragment" >

<ImageView
    android:id="@+id/glass1"
    android:layout_width="160dp"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:src="@drawable/glass" android:contentDescription="@string/hello_world"/>

<ImageView
    android:id="@+id/glass2"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/glass1"
    android:layout_centerHorizontal="true"
    android:contentDescription="@string/hello_world"
    android:src="@drawable/broken" />

每次,当我在平板电脑中运行该程序时,它都会在活动中崩溃。我尝试删除连接检测器和 if 语句,活动进展顺利。

编辑:唯一的问题是设置可见性()在 if 语句中,因为当删除它时,其他一切都会正常工作。能解决吗?或者我们可以用不同的方法控制两个图像视图的可见性吗?

logcat:

05-21 11:05:38.432: E/filePathInTheme(23435): fallback to res
05-21 11:05:38.462: E/filePathInTheme(23435): fallback to res
05-21 11:05:38.482: E/filePathInTheme(23435): fallback to res
05-21 11:05:38.652: E/filePathInTheme(23435): fallback to res
05-21 11:05:38.802: I/Adreno200-EGLSUB(23435): <ConfigWindowMatch:2081>: Format RGBA_8888.
05-21 11:05:38.812: D/memalloc(23435): /dev/pmem: Mapped buffer base:0x50c32000 size:11960320 offset:10485760 fd:54
05-21 11:05:39.122: D/memalloc(23435): /dev/pmem: Mapped buffer base:0x51a3b000 size:13434880 offset:11960320 fd:57
05-21 11:05:41.542: E/filePathInTheme(23435): fallback to res
05-21 11:05:41.572: W/dalvikvm(23435): threadid=1: thread exiting with uncaught exception (group=0x40a659f0)
05-21 11:05:41.582: E/AndroidRuntime(23435): FATAL EXCEPTION: main
05-21 11:05:41.582: E/AndroidRuntime(23435): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lemonaade.watchr/com.lemonaade.watchr.MainActivity}: java.lang.NullPointerException
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1961)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1152)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.os.Looper.loop(Looper.java:137)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.ActivityThread.main(ActivityThread.java:4450)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at java.lang.reflect.Method.invokeNative(Native Method)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at java.lang.reflect.Method.invoke(Method.java:511)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at dalvik.system.NativeStart.main(Native Method)
05-21 11:05:41.582: E/AndroidRuntime(23435): Caused by: java.lang.NullPointerException
05-21 11:05:41.582: E/AndroidRuntime(23435):    at com.lemonaade.watchr.MainActivity.onCreate(MainActivity.java:35)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.Activity.performCreate(Activity.java:4465)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-21 11:05:41.582: E/AndroidRuntime(23435):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1925)
05-21 11:05:41.582: E/AndroidRuntime(23435):    ... 11 more

thanks.


你应该移动

ImageView glss1 = (ImageView) findViewById(R.id.glass1);
ImageView glss2 = (ImageView)findViewById(R.id.glass2);

under onCrete(....) after setContentView(R.layout.activity_main);

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

显示/隐藏 ImageView 可见性时 Android 应用程序崩溃 的相关文章

  • 改造中如何使用HashMap发布数据?

    您能解释一下如何使用以下方式发布数据吗hashmap in 改造2 这就是我发的帖子 FormUrlEncoded POST getProfile Call
  • Android 上的多处理

    我一直在 Android 上执行一些测试 以验证并行化算法 如 FFT 的性能可以提高多少 我通过使用带有 JNI FFTW 的 pthread 和 Java 线程 来自 JTransforms 来实现这些算法 我没有像预期那样通过使用线程
  • 从ndk中的不同线程调用java方法

    我正在尝试使用 android 的 NDK 从 C 中的独立线程调用 java 静态方法 到目前为止我已经 JNIEnv env AttachJava jclass cls2 env gt FindClass com actvt showd
  • 使用 ViewPager 从 Activity 到 Fragment 的通信

    我有一个 Activity 和两个 Fragmentstablayout含有一个viewpager 现在我可以通过实现谷歌的指南回调接口从片段到活动进行通信 但我怎样才能以另一种方式沟通从活动到片段 如果活动中发生了一些事情 外部事件 我想
  • Bash 字符串之间的比较 - 相等但不相等

    我只想在 Bash 中的两个字符串之间进行非常简单的比较 stat curl Is url head n 1 echo stat if stat HTTP 1 1 200 OK then echo symbol is OK echo sta
  • Google play APK 上传错误重复权限声明

    我尝试上传新的 apk 使用我自己的发布密钥存储签名 并在 google play 开发者控制台中收到以下错误 重复的许可声明 android permission ACCESS COARSE LOCATION 与不同 maxSdkVers
  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • Android 中的处理程序到处理程序与 Messenger 到 Messenger 通信

    问题 使用起来是否 更好 更快且开销更少 Handler http developer android com reference android os Handler html与使用 Handler 通信相比信使 http develop
  • 移动到SD卡

    我知道从 android 2 2 开始可以使用移动到 SD 卡功能 我想知道有没有办法在我的程序中检测设备是否支持移动到 SD 卡功能 如果支持 则可以移动 否则如果不支持 则什么也不会发生 将在手机内存中 我的主要问题是我的应用程序支持
  • Horizo​​ntalScrollView 将 GridView 缩小为小行

    当我将 Horizo ntalScrollView 放在 GridView 周围时 GridView 会被压缩到左侧的一个小列中 Gridview 的垂直滚动条甚至出现在左侧 Horizo ntalScrollView 的宽度设置为 fil
  • 当我们使用赋值而不是比较时,如何评估 if/while 条件?

    我在学习 Java 的 OCA OCP 时发现了这个令人惊讶的事情 下面是第一段代码 其中 if 测试条件 部分 让我惊讶 public class BooleanIf public static void main String args
  • 标签栏随键盘一起上升

    这个问题之前已经发过 但是没有答案 Problem TabBar gt 2 个选项卡 选项卡一有一个Scrollview and an EddiText 标签二 其他 贴带时EditText 软键盘上升 TabBar与它一起 一个丑陋的解决
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • 什么是版本代码主要?和versionCode有什么区别?

    我刚刚发现PackageInfo versionCode https developer android com reference android content pm PackageInfo html versionCode在 Andr
  • 谷歌地图URL中参数的含义是什么

    我正在 Android 上使用 Webkit 浏览器 我想在以下 URL 中获得一个红色 A 符号
  • 如何将 Android 应用程序添加到已在 iOS 应用程序中使用的现有 Firebase 项目?

    我一直在我的 iOS 应用程序中使用 Firebase 项目 我现在想开始为 Android 应用程序使用相同的 Firebase 项目及其所有数据库和存储 在您的应用程序下Overview菜单 你应该按添加另一个应用程序并选择Androi
  • 调用外部应用程序

    如何从我的应用程序调用外部应用程序 例如 我需要打电话Shazam 应用程序 来自我的应用程序 我可以在应用程序的包名称中看到logcat 这对任何目的都有用吗 特别是对于 Shazam 以下代码有效 Intent intent new I
  • 如何获取视图到手机底部的距离?

    如果我在布局上有某个视图 ImageView 例如 是否可以找到View的下边框到手机屏幕底部的距离 Thanks instantiate DisplayMetrics DisplayMetrics dm new DisplayMetric
  • Android:通过查找带有标签而不是 ID 的容器来添加片段

    我正在使用 for 循环创建片段的多个实例 在每个片段中 我需要添加另一组子片段 为此 我需要找到正确的容器 如果我使用容器的 ID 所有子片段都会添加到第一个父片段 而不是它们自己的父片段 在我的主要片段中 for ParentFragm

随机推荐

  • Asp.Net Core:将数据添加到IdentityDbContext或使用DbContext

    我与Asp Net Core WebApi项目 我可以将我的表格添加到身份数据库上下文 像这样 public class ApplicationDbContext IdentityDbContext
  • 如何使用 switch 语句使用条件类型来缩小类型范围?

    我有一个 食物 对象 它可以有多种类型 具体取决于 类别 道具的值 该对象来自json 因此之前不可能知道类型 我正在尝试在类别道具上使用 switch 语句 以便将 Food 对象转换为正确的类型 export type Category
  • 如何在没有任何数据库的情况下保存我的 datagridview?

    我创建了一个 C Windows 窗体 其中有一个 DataGridView 我可以从此 DatagridView 添加或删除一些行 但现在我想知道如何保存我的更改 因此每次打开窗口时我都可以看到我添加的行 P S 我必须提到我不想使用任何
  • 如何将文本框的长度绑定到文本块?

    我需要帮助来绑定 wpf 上的一些东西 我有这一列文本框 它显示数据网格中属性的值
  • 如何优化和提高以下代码的性能?它获取大量记录,因此性能缓慢

    如何优化和提高以下Sql存储过程的性能 它获取大量记录 因此导致性能下降 该列也是非聚集索引器 SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO SET NOCOUNT ON GO 根据T选择
  • Docker,它是什么以及目的是什么

    前几天听说过 Docker 想了解一下 但其实我不知道这个 容器 的用途是什么 什么是容器 它可以取代专门用于开发的虚拟机吗 简单来说 公司使用Docker的目的是什么 主要优点 VM 例如 使用虚拟机 VM 软件 可以将 Ubuntu 安
  • ADO.NET 中断开连接和连接方法的确切含义是什么

    我正在学习ADO Net 我读到了这一行 DataReader 是 连接 方法 而数据集是 断开连接 方法 从这句话我得出这样的结论 在数据读取器中我们需要建立与数据库的连接 而在数据集中我们不需要建立与数据库的连接 但是如何在不建立连接的
  • 对矩阵中的列值进行采样,无需替换

    我有一些 R 经验 但总是很难编写新代码 我在处理当前项目时发现了一些非常有用的帖子 但似乎找不到下一步 这是我到目前为止所做的 导入 20x20 csv 的排名 每列包含从 1 到 20 的每个整数的一个实例 因此所有 colSum 均为
  • Android 正则表达式模式 Incode UTF-8

    我正在 android 中尝试使用 matcher group 1 捕获 代码 String html doc html toString Pattern p Pattern compile is caption is is is Patt
  • 使用某些纸/芯元件时 dartium 中的警告

    我正在尝试使用 paper tabs paper tab 和 core pages 元素 但 dartium 显示了一堆警告 例如 from html5lib Unexpected non space characters Expected
  • 如何修复防伪令牌适用于用户“”,但当前用户是“xxxx”错误

    提供的防伪令牌适用于用户 但当前用户是 xxxx 我已经遵循了所有可能的解决方案来消除此错误 但没有成功 这是场景 我在浏览器选项卡 A 选项卡 B 中打开了 2 个单独的登录选项卡 1 我在选项卡 A 中登录我的网站 2 然后尝试登录Ta
  • VSTS 发布拉取请求构建触发器

    我的团队正在使用 VSTS 构建和发布机制 结合拉取请求分支安全设置 以便只有在拉取请求完成后才能合并代码 不过 我们遇到了一些奇怪的事情 因为当创建拉取请求 并且生成构建来证明提交 时 由拉取请求触发的此构建的完成也会间接触发发布 因为我
  • 检测 Silverlight 中的 DataContext 更改

    我有一个由多个部分组成的问题 1 Silverlight 不公开 DataContextChanged 事件是否有充分的理由 如果微软的某个人做出改变 似乎可以避免很多麻烦internal to public在 FrameworkEleme
  • C++ 右值引用和移动语义

    C 03 存在可能隐式发生不必要的副本的问题 为此 C 11引入了rvalue references and move semantics 现在我的问题是 这种不必要的复制问题是否也存在于 C 和 java 等语言中 或者只是 C 的问题
  • 当测试用例通过或失败时发送电子邮件警报

    我想在测试执行结果通过或失败或在测试管理器上执行时的任何其他状态时向用户发送电子邮件警报 我知道测试管理器无法做到这一点 但 TFS 可以 我已经尝试了各种查询组合来设置相同的警报 我想为自动化测试用例执行此操作 我将创建的构建不会发生太大
  • 打开 RewriteEngine 会产生 403 错误——如何打开 FollowSymLinks?

    我正在 OSX 上使用内置的 Apache2 我将文档根目录移动到桌面上的一个文件夹中 并确保 www and everyone具有读取权限 它工作得很好 很棒 PHP 工作 一切工作正常 直到我添加一个 htaccess仅此行 Rewri
  • 将简单的 JSON 对象转换为属性文件

    我有一个简单的 JSON 对象 想将其转换为 bash 中的属性文件 Input foo bar abc def ghi 预期输出 foo bar abc def ghi 您可以使用to entries为了那个原因 jq r to entr
  • 在 C++ 中捕获 Python 异常

    我正在开发一个服务器 客户端应用程序 其中客户端调用服务器的 API 该 API 为用户输入提供 Python 接口 这意味着客户端接口和服务器接口是用Python编写的 而套接字代码是用C 编写的 在服务器端 我有一堂课 Test 在 C
  • 检查数组是否为空似乎不起作用

    简单数组和简单检查是否是数组或对象 但是当没有数组数据而不是显示时页面崩溃No 这是数组 url get curl content tx https example com arr json decode url true if is ar
  • 显示/隐藏 ImageView 可见性时 Android 应用程序崩溃

    我一直在尝试创建我的第一个 Android 应用程序 是的 遇到了应用程序崩溃 我的片段 主 中有两个 ImageView 在相对布局中将 imageview 1 与 imageview2 重叠 我想做的是 如果有互联网连接 应该会显示 i