收到回调错误

时间:2016-08-08 09:33:53

标签: android android-layout

当我尝试运行我的应用时,这个特定的活动: -

package com.justforyou.bestnarutosongs;

import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;

import java.util.ArrayList;

public class SongsListActivity extends AppCompatActivity //implements View.OnClickListener {

public ImageButton P_and_P = (ImageButton) findViewById(R.id.P_and_P);
public  ImageButton Stop = (ImageButton) findViewById(R.id.imageButton5);
public TextView NameD = (TextView) findViewById(R.id.textView3);
public TextView RateD = (TextView) findViewById(R.id.textView4);
public SeekBar seek_bar = (SeekBar) findViewById(R.id.seekBar);
public boolean IsPaused = false;
public int Old_Song = -326523;
private MediaPlayer mediaplayer;
private AudioManager mAudioManager;
public Handler seekHandler = new Handler ();


private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener()
{
    @Override
    public void onAudioFocusChange(int focusChange){
        if(focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK || focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){
            mediaplayer.pause();
            mediaplayer.seekTo(0);
        }
        else if(focusChange == AudioManager.AUDIOFOCUS_GAIN){
            mediaplayer.start();
        }
        else if(focusChange == AudioManager.AUDIOFOCUS_LOSS){
            if(mediaplayer != null)
            {
                mediaplayer.release();
                mediaplayer = null;
            }
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_songs_list);
    seekUpdation();

    mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

    final ArrayList<Songs> Song = new ArrayList<>();
    Song.add(new Songs("Anger", "Rate: 4.5", R.raw.anger, R.drawable.anger ));
    Song.add(new Songs("Daylight Of Konoha", "Rate: 4.7", R.raw.d_o_k, R.drawable.d_o_k ));
    Song.add(new Songs("Experienced Many Battles", "Rate: 4.0", R.raw.experienced_many_battles, R.drawable.e_m_b ));
    Song.add(new Songs("Gekiha", "Rate: 4.0", R.raw.gekiha, R.drawable.gekiha ));
    Song.add(new Songs("Genshi", "Rate: 3.0", R.raw.genshi, R.drawable.genshi ));
    Song.add(new Songs("Girei", "Rate: 4.5", R.raw.girei, R.drawable.girei ));
    Song.add(new Songs("Hidan", "Rate: 3.0", R.raw.hidan, R.drawable.hidan ));
    Song.add(new Songs("HomeComing", "Rate: 3.0", R.raw.homecoming, R.drawable.homecoming ));
    Song.add(new Songs("Naruto Main Theme", "Rate: 5.0", R.raw.naruto_main_theme, R.drawable.narutomt ));
    Song.add(new Songs("Saika", "Rate: 4.5", R.raw.saika, R.drawable.saika ));
    Song.add(new Songs("Senya(Itachi's Theme)", "Rate: 5.0", R.raw.senya, R.drawable.senya ));
    Song.add(new Songs("Shirotsumekusa", "Rate: 3.0", R.raw.shirotsumekusa, R.drawable.shirot ));
    Song.add(new Songs("Turn Over", "Rate: 4.5", R.raw.turn_over, R.drawable.turn_over ));

    P_and_P.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view)
        {
            if(mediaplayer != null)
            {
               if(!mediaplayer.isPlaying() || IsPaused)
               {
                   P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp);
                   IsPaused = false;
                   int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

                   if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                       mediaplayer.start();
                       mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                           @Override
                           public void onCompletion(MediaPlayer mediaPlayer) {
                               if (mediaplayer != null) {
                                   mediaplayer.release();
                                   mediaplayer = null;
                                   mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
                               }
                           }
                       });
                   }
               }
                else
               {
                   P_and_P.setImageResource(R.drawable.ic_pause_white_48dp);////////////////////////////////////////////////////////////////////
                   IsPaused = true;
                   mediaplayer.pause();
               }
            }

        }
    });

    Stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(mediaplayer != null)
            {
                mediaplayer.pause();
                mediaplayer.seekTo(0);
                IsPaused = true;
            }
        }
    });



    SongsAdapter SongAdapter = new SongsAdapter(this, Song, R.color.Main_Color);
    ListView listView = (ListView) findViewById(R.id.list_Col);
    listView.setAdapter(SongAdapter);




    listView.setOnItemClickListener
            (new AdapterView.OnItemClickListener()
             {
                 @Override
                 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
                 {
                     int Current_Song;
                     Songs song = Song.get(i);

                     //If mediaPlayer is not used before, this will make oldsong as present song.
                     if (Old_Song == -326523)
                     {
                         Old_Song = song.getSong();
                     }

                     Current_Song = song.getSong();

                     ImageView IVP_P = (ImageView) findViewById(R.id.P_PImage);


                     //If mediaPlayer is paused.
                     if (IsPaused)
                     {
                         //If the song paused is same as the new song.
                         if(Current_Song == Old_Song)
                         {
                             mediaplayer.start();
                         }

                         //If the song Paused is not the new song.
                         else
                         {
                             if (mediaplayer != null)
                             {
                                 mediaplayer.release();
                                 mediaplayer = null;
                             }

                             int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

                             if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                                 mediaplayer = mediaplayer.create(SongsListActivity.this, song.getSong());
                                 Old_Song = song.getSong();
                                 mediaplayer.start();
                                 mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                                     @Override
                                     public void onCompletion(MediaPlayer mediaPlayer) {
                                         if (mediaplayer != null) {
                                             mediaplayer.release();
                                             mediaplayer = null;
                                             mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
                                         }
                                     }
                                 });
                             }
                         }
                         IsPaused = false;

                     }

                     else if (mediaplayer != null)
                     {
                         //If mediaPlayer is already Playing a song.
                         if (mediaplayer.isPlaying()) {
                             mediaplayer.pause();
                             IVP_P.setImageResource(R.drawable.ic_play_arrow_black_24dp);
                             IsPaused = true;
                         }
                     }

                     //If mediaPlayer is used for first time and if mediaPlayer is neither paused
                     else
                     {

                         if (mediaplayer != null)
                         {
                             mediaplayer.release();
                             mediaplayer = null;
                         }

                         int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

                         if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                             mediaplayer = mediaplayer.create(SongsListActivity.this, song.getSong());
                             Old_Song = song.getSong();
                             mediaplayer.start();

                             mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                                 @Override
                                 public void onCompletion(MediaPlayer mediaPlayer) {
                                     if (mediaplayer != null) {
                                         mediaplayer.release();
                                         mediaplayer = null;
                                         mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
                                     }
                                 }
                             });
                         }
                     }

                 }
             }
            );
}

Runnable run = new Runnable (){
    @Override
    public void run() {
        seekUpdation();
    }
};

public void seekUpdation()
{
    if(mediaplayer != null) {
        seek_bar.setProgress(mediaplayer.getCurrentPosition());
        seekHandler.postDelayed(run, 1000);
    }
    }

@Override
protected void onStop() {
    super.onStop();
    if(mediaplayer != null)
    {
        mediaplayer.release();
        mediaplayer = null;
    }
}
}

出现此错误: -

08-08 14:39:41.281 1730-1730/com.justforyou.bestnarutosongs E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: com.justforyou.bestnarutosongs, PID: 1730
                                                                          java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.justforyou.bestnarutosongs/com.justforyou.bestnarutosongs.SongsListActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2444)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613)
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:181)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                              at android.os.Looper.loop(Looper.java:194)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5649)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:372)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
                                                                           Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
                                                                              at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:72)
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.<init>(AppCompatDelegateImplV7.java:146)
                                                                              at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:28)
                                                                              at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:41)
                                                                              at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:193)
                                                                              at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:173)
                                                                              at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:511)
                                                                              at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:183)
                                                                              at com.justforyou.bestnarutosongs.SongsListActivity.<init>(SongsListActivity.java:23)
                                                                              at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                              at java.lang.Class.newInstance(Class.java:1606)
                                                                              at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613) 
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:181) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                              at android.os.Looper.loop(Looper.java:194) 
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5649) 
                                                                              at java.lang.reflect.Method.invoke(Native Method) 
                                                                              at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 

有人可以告诉我,导致错误的是什么? 以下是其xml文件: -

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

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.58"
    android:background="@color/Player_Color">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2.27">

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:weightSum="1">

                <ImageView
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:id="@+id/imageView" />

                <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:text="Please Select a Song"
                        android:textAppearance="?android:textAppearanceMedium"
                        android:textStyle="bold"
                        android:id="@+id/textView3"
                        android:layout_weight="1"
                        android:gravity="bottom" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:text=""
                        android:id="@+id/textView4"
                        android:layout_weight="1" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/Repeat"
                android:layout_weight="1"
                android:background="@color/Player_Color"
                android:src="@drawable/ic_repeat_white_48dp" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/Previous"
                android:layout_weight="1"
                android:background="@color/Player_Color"
                android:src="@drawable/ic_skip_previous_white_48dp" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/P_and_P"
                android:layout_weight="1"
                android:src="@drawable/ic_play_arrow_white_48dp"
                android:background="@color/Player_Color" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/Next"
                android:layout_weight="1"
                android:background="@color/Player_Color"
                android:src="@drawable/ic_skip_next_white_48dp" />

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent">

                <ImageButton
                    android:padding="11dp"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:id="@+id/imageButton5"
                    android:background="@color/Player_Color"
                    android:src="@drawable/control_stop"
                    android:scaleType="centerInside"
                    android:layout_centerVertical="true"
                    android:layout_alignParentStart="true" />

            </RelativeLayout>

        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:weightSum="1"
                android:gravity="center_vertical">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:text="00:00"
                    android:id="@+id/textView"
                    android:gravity="center_vertical" />

                 <SeekBar
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:id="@+id/seekBar"
                    android:layout_weight="1" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:text="00:00"
                    android:id="@+id/textView2"
                    android:gravity="center_vertical" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>


<ListView
    android:id="@+id/list_Col"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_gravity="bottom"
    android:drawSelectorOnTop="true"
    android:orientation="vertical"
    tools:context="com.justforyou.bestnarutosongs.SongsListActivity"
    style="centreCrop" />

在渲染此Xml文件时,它也会出现此错误: -

Error Image

这两个错误是否相关。什么是这个问题的最佳解决方案? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你应该把这个片段

public ImageButton P_and_P = (ImageButton) findViewById(R.id.P_and_P);
public  ImageButton Stop = (ImageButton) findViewById(R.id.imageButton5);
public TextView NameD = (TextView) findViewById(R.id.textView3);
public TextView RateD = (TextView) findViewById(R.id.textView4);
public SeekBar seek_bar = (SeekBar) findViewById(R.id.seekBar);

在你的onCreate()下面:setContentView(R.layout.activity_songs_list);

答案 1 :(得分:0)

我无法看到mOnAudioFocusChangeListener已注册的任何地方。

mAudioManager.OnAudioFocusChangeListener(mOnAudioFocusChangeListener);