我是新手,我正在学习新波士顿的编码。
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>
我非常肯定我没有弄乱@ drawable / stuffs。但每当我尝试在模拟器上运行应用程序时,它会说“不幸的是,快屁已经崩溃了”。我不确定发生了什么,如果有人帮助我,我会非常喜欢它。我是新开发者,我只有14岁。请帮帮我。
答案 0 :(得分:4)
您需要在夸大布局后检索UI元素,否则findViewById
会返回null
,因此行NullPointerException
处的fartnow.setOnClickListener
会导致您的应用崩溃。< / p>
以下是如何修复它:
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 :(得分:0)
在onCreate()方法中的setContentView()方法之后写下这一行 -
fartnow = (Button) findViewById(R.id.bFartNow);