按钮的 OnClickListener 上出现 NullPointerException

2023-11-27

我正在为人工智能学期项目编写 Android 游戏应用程序。我在主类的第 38 行收到 NullPointerException,它是启动屏幕中新游戏按钮的 setOnClickListener。

相关部分 WW3Activity 类:

public class WW3Activity extends Activity
{
public boolean DebugMode = false;
private String buildMenuEmplacement = ""; 

//[Initialization] Called when the app is first launched
@Override
public void onCreate(Bundle savedInstanceState)
{           
    super.onCreate(savedInstanceState);
    setContentView(R.layout.startscreen);

    //[Initialization] Makes the button resources available to the class
    final Button newGame = (Button) findViewById(R.id.buttonNewGame);
    final Button loadGame = (Button) findViewById(R.id.buttonLoadGame);
    final Button exitGame = (Button) findViewById(R.id.buttonExit);
    final Button about = (Button) findViewById(R.id.buttonAbout);
    final Button troll = (Button) findViewById(R.id.buttonTroll);
    final Button debug = (Button) findViewById(R.id.buttonDebug);

    //[Action] When user pushes the New Game button
    newGame.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            // Perform action on click
            setContentView(R.layout.main);
            buttonInitialize();
        }
    });
    //[Action] When user pushes the Exit Game button
    exitGame.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            // Perform action on click
            finish();
        }
    });
    //[Action] When user pushes the Debug Mode button
    exitGame.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            // Perform action on click
            DebugMode = true;
        }


      });
    }

    //[Initialization] Gets the emplacements ready to be pushed
   public void buttonInitialize()
   {
        final ImageView pe1 = (ImageView) findViewById(R.id.playerEmplacement1);
        final ImageView pe2 = (ImageView) findViewById(R.id.playerEmplacement2);
        final ImageView pe3 = (ImageView) findViewById(R.id.playerEmplacement3);
        final ImageView pc = (ImageView) findViewById(R.id.playerCity);
        final ImageView ee1 = (ImageView) findViewById(R.id.enemyEmplacement1);
        final ImageView ee2 = (ImageView) findViewById(R.id.enemyEmplacement2);
        final ImageView ee3 = (ImageView) findViewById(R.id.enemyEmplacement3);
        final ImageView ec = (ImageView) findViewById(R.id.enemyCity);

        registerForContextMenu(findViewById(R.id.playerEmplacement1));
        registerForContextMenu(findViewById(R.id.playerEmplacement2));
        registerForContextMenu(findViewById(R.id.playerEmplacement3));
        registerForContextMenu(findViewById(R.id.enemyEmplacement1));
        registerForContextMenu(findViewById(R.id.enemyEmplacement2));
        registerForContextMenu(findViewById(R.id.enemyEmplacement3));

        /*empAction(pe1);
        empAction(pe2);
        empAction(pe3);
        empAction(ee1);
        empAction(ee2);
        empAction(ee3);
        empAction(ec);
        empAction(pc);*/
    }

还有 LogCat:

10-24 13:29:12.297: D/dalvikvm(440): GC_FOR_ALLOC freed 40K, 4% free 6356K/6595K, paused 177ms
10-24 13:29:12.303: I/dalvikvm-heap(440): Grow heap (frag case) to 6.653MB for 409616-byte allocation
10-24 13:29:12.503: D/dalvikvm(440): GC_FOR_ALLOC freed <1K, 5% free 6755K/7047K, paused 128ms
10-24 13:29:12.614: D/dalvikvm(440): GC_FOR_ALLOC freed 400K, 8% free 6762K/7303K, paused 57ms
10-24 13:29:12.663: D/AndroidRuntime(440): Shutting down VM
10-24 13:29:12.663: W/dalvikvm(440): threadid=1: thread exiting with uncaught exception (group=0x40014760)
10-24 13:29:12.683: E/AndroidRuntime(440): FATAL EXCEPTION: main
10-24 13:29:12.683: E/AndroidRuntime(440): java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.mbijou.cosc473.ww3/edu.mbijou.cosc473.ww3.WW3Activity}: java.lang.NullPointerException
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.ActivityThread.access$500(ActivityThread.java:122)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.os.Looper.loop(Looper.java:132)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.ActivityThread.main(ActivityThread.java:4123)
10-24 13:29:12.683: E/AndroidRuntime(440):  at java.lang.reflect.Method.invokeNative(Native Method)
10-24 13:29:12.683: E/AndroidRuntime(440):  at java.lang.reflect.Method.invoke(Method.java:491)
10-24 13:29:12.683: E/AndroidRuntime(440):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
10-24 13:29:12.683: E/AndroidRuntime(440):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
10-24 13:29:12.683: E/AndroidRuntime(440):  at dalvik.system.NativeStart.main(Native Method)
10-24 13:29:12.683: E/AndroidRuntime(440): Caused by: java.lang.NullPointerException
10-24 13:29:12.683: E/AndroidRuntime(440):  at edu.mbijou.cosc473.ww3.WW3Activity.onCreate(WW3Activity.java:38)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.Activity.performCreate(Activity.java:4397)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
10-24 13:29:12.683: E/AndroidRuntime(440):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779)
10-24 13:29:12.683: E/AndroidRuntime(440):  ... 11 more

启动屏幕.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageView
        android:id="@+id/logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="493dp"
        android:layout_marginTop="217dp"
        android:src="@drawable/logo" >
    </ImageView>
    <Button
        android:id="@+id/buttonNewGame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/logo"
        android:layout_marginLeft="200dp"
        android:layout_marginTop="133dp"
        android:clickable="true"
        android:text="@string/bNewGame" >
    </Button>
    <Button
        android:id="@+id/buttonLoadGame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/buttonNewGame"
        android:layout_alignLeft="@+id/buttonTroll"
        android:layout_alignRight="@+id/buttonTroll"
        android:clickable="true"
        android:text="@string/bLoadGame" >
    </Button>    <Button
        android:id="@+id/buttonExit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/buttonLoadGame"
        android:layout_alignBottom="@+id/buttonLoadGame"
        android:layout_alignLeft="@+id/buttonDebug"
        android:layout_alignRight="@+id/buttonDebug"
        android:layout_toRightOf="@+id/buttonLoadGame"
        android:clickable="true"
        android:text="@string/bExit" >
    </Button>
    <Button
        android:id="@+id/buttonAbout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/buttonNewGame"
        android:layout_alignRight="@+id/buttonNewGame"
        android:layout_below="@+id/buttonNewGame"
        android:layout_marginTop="50dp"
        android:text="@string/bAbout" />
    <Button
        android:id="@+id/buttonTroll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/buttonAbout"
        android:layout_alignBottom="@+id/buttonAbout"
        android:layout_centerHorizontal="true"
        android:text="@string/bTrollface" />
    <Button
        android:id="@+id/buttonDebug"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/buttonTroll"
        android:layout_toRightOf="@+id/buttonTroll"
        android:layout_marginLeft="200dp"
        android:text="@string/bDebug" />
</RelativeLayout>

我最初遇到了 NullPointerException,因为我在将布局视图更改为开始屏幕之前声明了一组按钮,但我修复了该问题,然后就发生了这种情况。从技术上讲,这是家庭作业,但我不认为它有必要贴上家庭作业标签,因为这不是家庭作业类型的问题,因为这个问题与实际作业本身无关。


唯一的原因是findViewById()会回来null是因为你要找的View不属于当前View。 (您设置的视图setContentView()). If R.id.buttonNewGame is in R.layout.startscreen,尝试清理并重建您的项目。

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

按钮的 OnClickListener 上出现 NullPointerException 的相关文章

随机推荐

  • 以表单形式使用时,accept-charset="UTF-8" 参数不会执行任何操作

    我在表单中使用accept charset utf 8 属性 发现当使用非ascii进行表单发布时 标头在请求标头中具有不同的接受字符集选项 我有什么遗漏的吗 我的表格看起来像这样
  • fopen() 是 Linux 中的线程安全函数吗?

    如果我使用 fopen 调用在多线程中打开同一文件 并将数据写入该文件 我应该使用互斥锁来确保数据不会混乱吗 如果两个线程都打开同一个文件fopen 它们每个都有独立的文件流 FILE 由引用同一文件的独立文件描述符支持 您可以独立写入两个
  • 理解 JavaScript 的真值和假值

    有人可以使用下面的示例数据解释 JavaScript Truthy 和 Falsy 我读过其他线程但仍然很困惑 var a 0 var a 10 5 var a 1 var a 1 根据我的理解 我相信var a 1 是唯一的真值 其余的都
  • 进一步理解setRetainInstance(true)

    What exactly当你打电话时发生setRetainInstance true on a Fragment 文档几乎不存在 这似乎是一个非常重要的功能 具体来说 我想知道这个序列 我编的 有多少是真实的 用户旋转设备 该片段已从Act
  • Android Studio 总是在开始“调试”后立即断开连接

    每次我尝试使用 Android Studio 调试任何项目时 应用程序都不会启动 并且控制台立即给出以下消息 连接到目标VM 地址 localhost 8603 传输 socket 测试运行开始与目标VM断开连接 地址 localhost
  • 如何在解决方案中获取具有给定类的完整命名空间的程序集名称和类名称?

    我正在使用 WPF 经常需要获取给定类的命名空间和程序集名称 但我不知道该怎么做 那么 当我们在解决方案资源管理器中浏览类或 和编辑类的代码时如何获取名称呢 请帮忙 您可以使用 Visual Studio即时窗口作为获取解决方案项目之一的程
  • 如何修改 Levenshtein 算法,以了解它是否插入、删除或替换了字符?

    所以我试图设计一个 Levenshtein 算法的衍生版本 在其中我跟踪我在字符串中所做的转换 插入 a 或用 a 代替 b Example 基本上 假设我正在计算 bbd 和 bcd 的编辑距离 编辑距离将为 1 变换将为 用 b 代替
  • 我可以更改 Android 自定义键盘的输出字体吗?

    我开发了一个android自定义键盘 我需要更改实际使用 unicode 打印的输出文本的字体样式 如何在整个设备的任何位置更改键盘文本输出的字体样式 而无需更改设备的默认字体 该字体也不在 Android 设备中 因此我们必须从开发键盘的
  • .NET 中的注册表:DeleteSubKeyTree 表示子项不存在,但是嘿,它确实存在!

    尝试删除子项树 HKEY CURRENT USER Software Microsoft Windows CurrentVersion Explorer FileExts hdr hdrsubkey 有一个子键 没有值 所以我使用这段代码
  • MySql 选择具有多个特定列的所有表

    我想获取所有具有 3 个特定列的表名 我想要的是从我想要得到的信息模式所有表名其中包含columnA AND columnB AND columnC 目前我正在使用类似的查询 SELECT DISTINCT TABLE NAME FROM
  • 如何使用 Python-NLTK 根据词汇内容(短语)解析句子

    Python NLTK 能否识别输入字符串并不仅根据空格而且根据内容解析它 可以说 计算机系统 在这种情况下就成了一个短语 谁能提供示例代码吗 输入字符串 用户对计算机系统响应时间看法的调查 预期产出 A 调查 的 用户 意见 的 计算机系
  • 如何在ServiceBus上通过sequenceNumber使用MessageReceiver.Receive方法

    我正在尝试从死信队列重新提交消息 我可以重播死信队列上的消息 这很好 问题是当我现在想从死信队列中删除它时 这是我正在尝试做的事情 var subscription mySubscription var topic myTopic var
  • 在闪亮的传单地图中使用标签和颜色时,图例标签不会内联显示

    当我想使用时labels and colors参数与addLegend 里面的函数shinyApp图例显示在楼梯中 如下所示 但如果我只渲染地图leaflet之外的shinyApp标签正确地内嵌显示 我见过这个帖子遇到同样的问题 但他们没有
  • 什么情况下需要使用 eval() 因为没有其他选择?

    I know eval出于速度和安全原因 应避免在 JavaScript 中使用 但就 PHP 而言 很少有人提到安全性 更常见的是 由于随意使用 您的程序运行速度比应有的速度慢eval 在什么具体情况下应该使用eval因为没有其他办法吗
  • 分析多线程程序[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我们的代码库已经有好几年了 所有原来的开发人员都早已不在了 它使用很多很多线程 但没有明显的设计或通用的架构原则 每个开发人员都有自己的多线程编程风格 因此有些线程使用队列相互通信
  • 具有多个父/子关系的 Elasticsearch

    书籍 用户和评论说 我正在构建一个具有复杂模型的应用程序 评论包含书籍和用户 ID 为了能够搜索至少包含一篇评论的图书 我已将图书设置为评论的父级并具有路由 但是 我还需要找到撰写包含某些短语的评论的用户 是否可以将书籍和用户同时作为评论的
  • 页面加载失败时在Chrome中获取当前域名

    如果您尝试使用 Chrome 加载 http sdqdsqdqsdsqdsqd com 您将获得 ERR NAME NOT RESOLVED 我希望通过一个小书签能够获取当前域名并将其重定向到 whois 页面 以便检查该域名是否可用 我在
  • 从 html 按钮 onclick 事件调用 typescript 方法

    我是打字稿新手 我有一个关于当您单击 html 按钮时如何从 html 页面调用 ts 文件内的方法的查询 ts file class AdminTS public alertMessageTS alert This is the test
  • 使用java创建CSV文件

    我将使用 java 创建 CSV 文件 这是代码的一部分 try FileWriter writer new FileWriter sFileName writer append Title for StoredArticle sa3 hi
  • 按钮的 OnClickListener 上出现 NullPointerException

    我正在为人工智能学期项目编写 Android 游戏应用程序 我在主类的第 38 行收到 NullPointerException 它是启动屏幕中新游戏按钮的 setOnClickListener 相关部分 WW3Activity 类 pub