当我尝试运行我的应用时,这个特定的活动: -
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文件时,它也会出现此错误: -
这两个错误是否相关。什么是这个问题的最佳解决方案? 任何帮助将不胜感激。
答案 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);