Java “这是为什么?”;不幸的是,你的应用程序崩溃了;?

Java “这是为什么?”;不幸的是,你的应用程序崩溃了;?,java,android,Java,Android,我是全新的,我正在新波士顿学习编码 MainActivity.java: package com.tipsoftech.fastfart; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; im

我是全新的,我正在新波士顿学习编码

MainActivity.java:

package com.tipsoftech.fastfart;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends Activity {

    MediaPlayer fartsound = MediaPlayer.create(MainActivity.this,
            R.raw.fartsound);
    Button fartnow = (Button) findViewById(R.id.bFartNow);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Full screen Open
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // Full screen Close



        fartnow.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                fartsound.start();
            }
        });
    }

}
活动_main.xml:

<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:background="@drawable/background"
    tools:context=".MainActivity" >

    <ImageButton
        android:id="@+id/bFartNow"
        android:contentDescription="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/fartnow" />

</RelativeLayout>


我很肯定我没有把@drawable/东西弄糟。但每当我试图在模拟器上运行应用程序时,它就会说“不幸的是,Fast Fart崩溃了。”。我不知道发生了什么事,如果有人帮我,我会非常高兴的。我是一个新的开发人员,我只有14岁。请帮帮我。

你需要在膨胀布局后检索你的UI元素,否则
findViewById
返回
null
,因此
NullPointerException
fartnow.setOnClickListener
会导致你的应用程序崩溃

以下是修复方法:

Button fartnow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main); //layout inflated
        fartnow = (Button) findViewById(R.id.bFartNow); //now it's ok 
正如注释中指出的,必须在
setContentView()之前被调用


请注意,当出现此类错误时,您应该始终阅读/发布stacktrace,它应该告诉您发生错误的行,这样您就可以更轻松地调试应用程序。

在扩展布局后,您需要检索UI元素,否则,
findViewById
返回
null
,从而在
fartnow.setOnClickListener
行返回
NullPointerException
,这会导致应用程序崩溃

以下是修复方法:

Button fartnow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main); //layout inflated
        fartnow = (Button) findViewById(R.id.bFartNow); //now it's ok 
正如注释中指出的,必须在
setContentView()之前被调用


请注意,当出现此类错误时,您应该始终读取/发布stacktrace,它应该告诉您发生错误的行,这样您就更容易调试应用程序了。

在onCreate()方法中的setContentView()方法之后写入这一行-


在onCreate()方法中的setContentView()方法之后写这一行-


使用logcat将告诉您代码中发生了什么,从而导致代码崩溃。您还可以在eclipse中使用window>show view>logcat直接查看代码。这将为您提供一个堆栈跟踪。使用logcat将告诉您代码中发生了什么,从而导致代码崩溃。您还可以在eclipse中使用window>show view>logcat直接查看它。这将为您提供堆栈跟踪。因此,在
setContentView()
之前需要调用
requestWindowFeature
,但不幸的是,快速放屁已经停止@用户3177771发布更新的代码和堆栈跟踪。或者问一个新问题。另外,
requestWindowFeature
需要在
setContentView()
之前调用。不幸的是,快速放屁已经停止@用户3177771发布更新的代码和堆栈跟踪。或者问一个新问题。