使用导航抽屉

时间:2017-07-05 14:59:42

标签: android android-layout nullpointerexception

我在我的项目中制作导航抽屉,然后我想制作左右滑动按钮,但我的应用停止并阻止。

我得到了这个错误:java.lang.RuntimeException:无法启动活动ComponentInfo {radiofm.arabelradio / radiofm.arabelradio.MainActivity}:java.lang.NullPointerException:尝试调用虚方法'void android.app.ActionBar。空对象引用上的setDisplayHomeAsUpEnabled(boolean)'

主要活动

包radiofm.arabelradio;

import android.content.res.Configuration;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.AsyncTask;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

import java.io.IOException;

import static android.media.AudioManager.STREAM_MUSIC;

public class MainActivity extends AppCompatActivity {


    ImageButton id_play;
    MediaPlayer mediaPlayer;
    boolean prepared = false;
    boolean started =false;
    String stream ="http://arabelfm.ice.infomaniak.ch/arabelprodcastfm.mp3";
    //main_page contain arabel_photo player for radio



    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;





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

        /////////////////////////////////////////////////////////////////////////////
        id_play = (ImageButton) findViewById(R.id.id_play);
        id_play.setEnabled(false);
        //id_play.setText("LOADING");
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        new PlayerTask().execute(stream);
        id_play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (started){
                    started=false;
                    mediaPlayer.pause();
                    id_play.setImageResource(R.drawable.play);
                   // id_play.setText("PLAY");
                }
                else {
                    started=true;
                    mediaPlayer.start();
                    id_play.setImageResource(R.drawable.pause);

                    //id_play.setText("PAUSE");
                }
            }
        });
        //main_page contain arabel_photo player for radio//////////////////////////:




        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        mToggle=new ActionBarDrawerToggle(this,mDrawerLayout, R.string.open,R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();

        getSupportActionBar() .setDisplayHomeAsUpEnabled(true);
        getSupportActionBar() .setHomeButtonEnabled(true);



    }




//////////////////////////////////////////////////////////////////////////////////////////////////////////
    class PlayerTask extends AsyncTask<String,Void,Boolean>{

        @Override
        protected Boolean doInBackground(String... strings) {

            try {
                mediaPlayer.setDataSource(strings[0] );
                mediaPlayer.prepare();
                prepared=true;
            } catch (IOException e) {
                e.printStackTrace();
            }

            return prepared;
        }

        @Override
        protected void onPostExecute(Boolean aBoolean) {
            super.onPostExecute(aBoolean);
            id_play.setEnabled(true);
            id_play.setImageResource(R.drawable.play);

            // id_play.setText("PLAY");
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if(started){
            mediaPlayer.pause();
        }
    }


    @Override
    protected void onResume() {
        super.onResume();
        if(started){
            mediaPlayer.start();
        }
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(prepared){
            mediaPlayer.release();
        }
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////
    //main_page contain arabel_photo player for radio//////////////////////////:



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (mToggle.onOptionsItemSelected(item))
        {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context="radiofm.arabelradio.MainActivity"
                android:background="#e10716"
                android:id="@+id/drawerLayout"

    >


    <android.support.design.widget.NavigationView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    app:menu="@menu/navigation_menu"
                    android:layout_gravity="start"
                >
    </android.support.design.widget.NavigationView>


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
            <ImageButton
                android:id="@+id/id_play"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:scaleType="fitCenter"
                android:background="#e10716"
                android:layout_marginBottom="84dp"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true" />

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="250dp"
                android:layout_height="100dp"
                android:layout_marginTop="55dp"
                app:srcCompat="@drawable/arabel"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true" />

    </RelativeLayout>



</android.support.v4.widget.DrawerLayout>

navigation_menu

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">


    <item
        android:id="@+id/na_listening"
        android:title="Listening"></item>

    <item
        android:id="@+id/nav_alarm"
        android:title="Alarm"></item>


    <item
        android:id="@+id/nav_settings"
        android:title="Settings"></item>


    <item
        android:id="@+id/nav_logout"
        android:title="Logout"></item>



</menu>

风格

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowNoTitle">true</item>`
    </style>

</resources>

1 个答案:

答案 0 :(得分:0)

删除

来自styles.xml的

<item name="android:windowNoTitle">true</item> 。 而是使用

  requestWindowFeature(Window.FEATURE_NO_TITLE);

代替。

在致电requestWindowFeature之前,您应致电setContentView()