2014-01-09 72 views
0

我是全新的,我正在學習新波士頓的編碼。爲什麼這個返回「不幸的是你的應用程序崩潰了」?

的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(); 
      } 
     }); 
    } 

} 

的activity_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> 

我很肯定,我也不會弄亂@繪製/東西。但是,無論何時我試圖在模擬器上運行應用程序,它都會說「不幸,快速放屁已經崩潰」。我不確定發生了什麼,如果有人幫助我,我真的很喜歡它。我是一名新開發人員,我只有14歲。請幫助我。

+0

使用的logcat會告訴你在代碼中發生了什麼,使之崩潰http://developer.android.com/tools /help/logcat.html你也可以使用window> show view> logcat在eclipse中直接查看它。這會給你一個棧跟蹤 –

回答

4

您需要充氣佈局後檢索您的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 

正如在評論中指出,requestWindowFeature必須是打電話前setContentView()

請注意,您應經常閱讀/發表您的堆棧跟蹤,當你有這樣的錯誤,它應該告訴你它發生的地方,它會更容易調試你的應用程序。

+1

另外,'requestWindowFeature'需要在* setContentView()之前被調用*) – codeMagic

+1

@codeMagic是的,謝謝你。忽略了這一個。 :) –

+0

不幸的是,快速屁已停止! – user3177771

0

寫的setContentView後,這條線()在你的onCreate methos()方法 -

fartnow = (Button) findViewById(R.id.bFartNow); 
相關問題