私のアプリケーションでplayer.pause();
メソッドを呼び出す際にこのエラーが発生します。 ImageButtonを使用して音楽を一時停止しています。私はsong_list
クラスからメソッドを呼び出してトラックを一時停止します。しかし、次の例外が発生します。mediaplayerメソッドを呼び出す際のオブジェクトの参照例外がありません
試みがnullのオブジェクト参照の上に仮想メソッド '空android.media.MediaPlayer.pauseを()' を呼び出すために
マイMainActivity:
public class MusicKom extends AppCompatActivity {
private static String TAG = "PermissionDemo";
public static final int REQUEST_READ_STORAGE = 112;
private ImageButton btplay;
private ImageButton pausemusic;
public void playbutton(int playbuttonid){
btplay=(ImageButton)findViewById(R.id.play);
btplay.setBackgroundResource(playbuttonid);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_music_kom);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
// Create an adapter that knows which fragment should be shown on each page
final viewpageadapter adapter = new viewpageadapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
Button bt1 = (Button)findViewById(R.id.song_list);
Button bt2 = (Button)findViewById(R.id.album_list);
Button bt3 = (Button)findViewById(R.id.artist_list);
pausemusic = (ImageButton)findViewById(R.id.play);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setCurrentItem(0);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setCurrentItem(1);
}
});
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setCurrentItem(2);
}
});
pausemusic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
songs_list sl=new songs_list();
sl.pauseplay();
pausemusic.setBackgroundResource(R.drawable.stop);
}
});
}
}
私のsong_list断片:
public class songs_list extends Fragment {
// Adapter that exposes data from a Cursor to a ListView widget.
private MediaCursorAdapter mediaAdapter = null;
public MediaPlayer player;
private String currentFile="";
private boolean isStarted = true;
private TextView selelctedFile = null;
private View v=null;
private String selectedtitem=null;
private int fileposition;
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
player = new MediaPlayer();
// Use cursor to get data from external resource
final Cursor cursor = getActivity().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
// check Cursor has data or not
if (null != cursor) {
cursor.moveToFirst();
mediaAdapter = new MediaCursorAdapter(getActivity().getApplicationContext(), R.layout.list_layout, cursor);
v=inflater.inflate(R.layout.fragment_songs_list, container, false);
ListView lv = (ListView)v.findViewById(android.R.id.list);
lv.setAdapter(mediaAdapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectedtitem = (String) view.getTag();
startPlay(selectedtitem);
}
});
}
return v;
}
private void startPlay(String file) {
player.stop();
player.reset();
try {
player.setDataSource(file);
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
((MusicKom) getActivity()).playbutton(R.drawable.play);
}
public void pauseplay(){
Log.i(TAG, "pauseplay: ");
player.pause();
}
}
'logcat'をご覧ください。あなたの 'player'はnullです。 'player'を他のアクティビティにどのように渡していますか? – rupinderjeet
申し訳ありませんが、完全なコードではありませんでした。今すぐやってみて下さい。 –