Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一次点击声音导致NullPointerException的按钮_Java_Android_Xml_Nullpointerexception - Fatal编程技术网

Java 一次点击声音导致NullPointerException的按钮

Java 一次点击声音导致NullPointerException的按钮,java,android,xml,nullpointerexception,Java,Android,Xml,Nullpointerexception,我是java新手,我正在创建一个按钮,一旦按下,就会得到一个简单的声音。 我的代码如下所示: ImageButton one = (ImageButton) new Button(R.id.imageButton); //error here final MediaPlayer mp = MediaPlayer.create(this, R.raw.pears); one.setOnClickListener(new OnClickListener(){ public void onC

我是java新手,我正在创建一个按钮,一旦按下,就会得到一个简单的声音。 我的代码如下所示:

ImageButton one = (ImageButton) new Button(R.id.imageButton); //error here
final MediaPlayer mp = MediaPlayer.create(this, R.raw.pears);
one.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
        mp.start();
    }
});
我得到一个错误“在按钮不能应用于int”但我的变量不是int类型,而是一个按钮类型。还有一个与NullPointerException有关的致命错误。我查找了NullPointerException,似乎您在未创建对象时收到了错误。但我正在创建一个ImageButton对象。。。 有什么建议吗?谢谢

以下是onCreate方法:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_item); //layout with ImageButton id imageButton

        mTitle = mDrawerTitle = getTitle();

        // load slide menu items
        navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);

        // nav drawer icons from resources
        navMenuIcons = getResources()
                .obtainTypedArray(R.array.nav_drawer_icons);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

        navDrawerItems = new ArrayList<NavDrawerItem>();

        // adding nav drawer items to array
        // Home
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
        // Find People
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));

        // Recycle the typed array
        navMenuIcons.recycle();

        mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

        // setting the nav drawer list adapter
        adapter = new NavDrawerListAdapter(getApplicationContext(),
                navDrawerItems);
        mDrawerList.setAdapter(adapter);

        // enabling action bar app icon and behaving it as toggle button
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                R.drawable.ic_drawer, //nav menu toggle icon
                R.string.app_name, // nav drawer open - description for accessibility
                R.string.app_name // nav drawer close - description for accessibility
        ) {
            public void onDrawerClosed(View view) {
                //getSupportActionBar().setTitle(mTitle);
                // calling onPrepareOptionsMenu() to show action bar icons
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setTitle(mDrawerTitle);
                // calling onPrepareOptionsMenu() to hide action bar icons
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        if (savedInstanceState == null) {
            // on first time display view for first nav item
            displayView(0);
        }

        final Context context = getApplicationContext();
        final int duration = Toast.LENGTH_SHORT;
        ImageButton one;

        try {
            one = (ImageButton) findViewById(R.id.imageButton);
            one.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {


                    final MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.pears);
                    mp.start();

                }
            });
        }
        catch (Exception e){
            Log.d("wshhsounds", Log.getStackTraceString(new Exception()));
        }
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_项);//带有ImageButton id的布局ImageButton
mTitle=mDrawerTitle=getTitle();
//加载幻灯片菜单项
navMenuTitles=getResources().getStringArray(R.array.nav\u抽屉\u项目);
//参考资料中的导航抽屉图标
navMenuIcons=getResources()
.obtainTypedArray(R.array.nav_drawer_图标);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.list\u slidermenu);
navDrawerItems=新的ArrayList();
//将导航抽屉项添加到阵列
//家
添加(新的NavDrawerItem(navMenuTitles[0],navMenuIcons.getResourceId(0,-1));
//找人
添加(新的NavDrawerItem(navMenuTitles[1],navMenuIcons.getResourceId(1,-1));
//回收类型化数组
navMenuIcons.recycle();

setOnItemClickListener(新的SlideMenuClickListener()); //设置导航抽屉列表适配器 适配器=新的NavDroperListAdapter(getApplicationContext(), 纳维特姆斯); mDrawerList.setAdapter(适配器); //启用操作栏应用程序图标并将其作为切换按钮 getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); mDrawerToggle=新操作BarDrawerToggle(此,mDrawerLayout, R.drawable.ic_抽屉,//导航菜单切换图标 R.string.app_name,//导航抽屉打开-可访问性说明 R.string.app_name//nav抽屉关闭-可访问性说明 ) { 公共无效onDrawerClosed(视图){ //getSupportActionBar().setTitle(mTitle); //调用onPrepareOptions菜单()以显示操作栏图标 无效操作菜单(); } 打开图纸上的公共空白(视图抽屉视图){ getSupportActionBar().setTitle(mDrawerTitle); //调用onPrepareOptions菜单()隐藏操作栏图标 无效操作菜单(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); 如果(savedInstanceState==null){ //第一个导航项目的首次显示视图 显示视图(0); } 最终上下文=getApplicationContext(); 最终整数持续时间=Toast.LENGTH\u SHORT; 图像按钮一; 试一试{ 一=(ImageButton)findViewById(R.id.ImageButton); setOnClickListener(新的OnClickListener(){ 公共void onClick(视图v){ final MediaPlayer mp=MediaPlayer.create(getApplicationContext(),R.raw.pears); mp.start(); } }); } 捕获(例外e){ Log.d(“wshhshounds”,Log.getStackTraceString(newException()); } }
根据@Ryan的要求,以下是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:padding="0dp" >

    <ImageButton
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton"
        android:src="@drawable/button"
        android:scaleType="fitCenter"
        android:background="@color/white"/>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@color/blue">

        <TextView
            android:id="@+id/grid_item_label_static"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Pears"
            android:layout_marginTop="3px"
            android:layout_gravity="center"
            android:textSize="50px"
            android:textColor="@color/white"
            android:paddingTop="11dp"
            android:paddingBottom="12dp"/>

    </LinearLayout>

</LinearLayout>

根据@Ryan的要求,日志如下:

03-25 13:57:54.530 13615-13615/com.non.nonabona.sounds E/AndroidRuntime﹕ 致命异常:主 java.lang.RuntimeException:无法启动活动组件信息{com.non.nonabona.sounds/com.non.nonabona.sounds.MainActivity}: java.lang.NullPointerException 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359) 在android.app.ActivityThread.access$700(ActivityThread.java:165) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:137) 位于android.app.ActivityThread.main(ActivityThread.java:5455) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:525) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1187) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.NullPointerException 位于com.non.nonabona.sounds.MainActivity.onCreate(MainActivity.java:76) 位于android.app.Activity.performCreate(Activity.java:5372) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359) 在android.app.ActivityThread.access$700(ActivityThread.java:165) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:137) 位于android.app.ActivityThread.main(ActivityThread.java:5455) 在java.lang.reflect.Method.Invokenactive(N
ImageButton one = (ImageButton)findViewById(R.id.imageButton); 
ImageButton one = (ImageButton) findViewByID(R.id.imageButton)