【问题标题】:I am having issues with a button app where audio is supposed to be played when I click a button in android studio我在按钮应用程序中遇到问题,当我单击 android studio 中的按钮时,应该播放音频
【发布时间】:2016-03-25 12:31:55
【问题描述】:

这是我的 xml 代码的输出:

这是我的主要活动文件的输出:

这是我的应用程序的 logcat 信息:

3-25 05:19:17.503 11521-11521/? I/art: 不延迟启用 -Xcheck:jni (已经启用) 03-25 05:19:17.595 11521-11521/com.example.pentazoid.buttonaudio W/系统:类加载器引用未知路径:/data/app/com.example.pentazoid.buttonaudio-1/lib/x86 03-25 05:19:17.673 11521-11521/com.example.pentazoid.buttonaudio D/MediaPlayer:在 MediaPlayer 中设置字幕锚 03-25 05:19:17.736 11521-11521/com.example.pentazoid.buttonaudio D/AndroidRuntime: 关闭虚拟机 03-25 05:19:17.737 11521-11521/com.example.pentazoid.buttonaudio E/AndroidRuntime: 致命异常: main 进程:com.example.pentazoid.buttonaudio,PID:11521 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.pentazoid.buttonaudio/com.example.pentazoid.buttonaudio.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.Button .setOnClickListener(android.view.View$OnClickListener)' 在空对象引用上 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' 在 com.example.pentazoid.buttonaudio.MainActivity.onCreate(MainActivity.java:23) 在 android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 03-25 05:20:05.622 11521-11527/com.example.pentazoid.buttonaudio W/art:暂停所有线程耗时:9.919ms

我做错了什么

【问题讨论】:

  • 设置contentview后找到button id。将button id改为findViewById(R.id.button)。
  • 你应该实现方法零

标签: android android-studio emulation


【解决方案1】:

您的错误是在您的 xml 中您是 namde 按钮 id button,而在您的 java 文件中您想要获取 findViewById(R.id.buttonId) 只需更改为 findViewById(R.id.button) 并在方法 onCreate 中移动 setContentview在你的button 之前有这样的:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 

最后一个问题:

并删除 xml 文件中的 android:onClick

【讨论】:

    【解决方案2】:

    将 contentView 移到上面,然后 findViewById 并将 R.id.buttonId 替换为 R.id.button

    【讨论】:

      【解决方案3】:

      这样做:

      替换xml如:

      android:id="@+id/button"
      

      并删除 android:onClick

      并在您的 MainActivity 中执行以下操作:

      Button zero = (Button)findViewById(R.id.button);
      zero.setOnClickListener(new View.OnClickListener(){
           @Override
                  public void onClick(View v) {
                      //do anything
                  }
      });
      

      当然放在 setContentView 之后。 希望对你有帮助!!!

      【讨论】:

      • 这并不能解决他的问题...你看到他在哪里声明了他的 contentView...。应用程序在启动时会崩溃
      • 这就是为什么我提到把它放在 setContentView 之后
      【解决方案4】:

      如果你告诉我们activity_main.xml会更容易找到,

      确保您包含 content_main.xml。

      确保R.id.buttonId 放在哪个XML 文件中?

      您的订单应如下所示:

       @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
             Button zero = (Button) findViewById(R.id.buttonId);
      
      }
      

      【讨论】:

        猜你喜欢
        • 2016-03-15
        • 2017-01-13
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-11
        相关资源
        最近更新 更多