Java 在片段方法内调用活动方法
我对这个有点陌生。也许我在做一些非常愚蠢的事情 我的问题是:有一种方法可以在片段方法内部获得活动方法?Java 在片段方法内调用活动方法,java,android,android-fragments,android-activity,android-fragmentactivity,Java,Android,Android Fragments,Android Activity,Android Fragmentactivity,我对这个有点陌生。也许我在做一些非常愚蠢的事情 我的问题是:有一种方法可以在片段方法内部获得活动方法? public class MyMusic extends Fragment { private static final int MY_PERMISSION_REQUEST = 1; SongScreen songScreen = new SongScreen(); static ArrayList<Song> songList = new ArrayL
public class MyMusic extends Fragment {
private static final int MY_PERMISSION_REQUEST = 1;
SongScreen songScreen = new SongScreen();
static ArrayList<Song> songList = new ArrayList<Song>();;
ListView songView;
String songTitle, songArtist, durationSong, songAlbum;
Song currentSong;
int position;
public MyMusic()
{}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_music, container, false);
//List View
songView = (ListView) view.findViewById(R.id.my_music);
songList = new ArrayList<Song>();
if (ActivityCompat.checkSelfPermission(getContext(),
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
if(ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),
android.Manifest.permission.READ_EXTERNAL_STORAGE)){
ActivityCompat.requestPermissions(getActivity(),
new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSION_REQUEST);
}else {
ActivityCompat.requestPermissions(getActivity(),
new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSION_REQUEST);
}
} else {
accessfiles();
}
return view;
}
public void accessfiles(){
// songList = new ArrayList<Song>();
Cursor song = getMusic();
SongAdapter songAdt = new SongAdapter(this.getContext(), songList);
songView.setAdapter(songAdt);
//When you click on the item pass to a new fragment with all the info
songView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String songTitle = ((TextView) view.findViewById(R.id.titleSong)).getText().toString();
String songArtist = ((TextView) view.findViewById(R.id.artistSong)).getText().toString();
String durationSong = ((TextView) view.findViewById(R.id.songDuration)).getText().toString();
Song currentSong = songList.get(position);
String songAlbum = currentSong.getAlbum();
passingToScreen(songTitle,songArtist,durationSong,songAlbum);
//Path have the path of the song
String path = currentSong.getPathSong();
((MainActivity)getActivity()).playerStart(path ,currentSong);
}});
}
private void passingToScreen(String songTitle, String songArtist, String durationSong, String songAlbum) {
Bundle bundle = new Bundle();
bundle.putString("songTitle", songTitle);
bundle.putString("songArtist", songArtist);
bundle.putString("durationSong", durationSong);
bundle.putString("songAlbum", songAlbum);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
songScreen.setArguments(bundle);
fragmentTransaction.replace(R.id.layoutCM,
songScreen,
songScreen.getTag()).commit();
}
public Cursor getMusic(){
Context context = getContextOfApplication();
ContentResolver contentResolver = context.getContentResolver();
Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor songcursor = contentResolver.query(songUri, null, null, null, null);
if (songcursor != null && songcursor.moveToFirst()){
int songId = songcursor.getColumnIndex(MediaStore.Audio.Media._ID);
int songTitle = songcursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int songArtist = songcursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int songAlbum = songcursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int songDuration = songcursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
int pathSong = songcursor.getColumnIndex(MediaStore.Audio.Media.DATA);
do{
Long currentId = songcursor.getLong(songId);
String currentTitle = songcursor.getString(songTitle);
String currentArtist = songcursor.getString(songArtist);
String currentAlbum = songcursor.getString(songAlbum);
Long currentDuration = songcursor.getLong(songDuration);
String currentPath = songcursor.getString(pathSong);
songList.add(new Song(currentId, currentTitle, currentArtist, currentDuration, currentAlbum, currentPath ));
}
while (songcursor.moveToNext());
}
return songcursor;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode){
case MY_PERMISSION_REQUEST: {
if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(getContext(),
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
accessfiles();
}
}
}
}
}
public void getNext(Song currentSong) {
if (songList.contains(currentSong))
{
int position1 = songList.indexOf(currentSong);
if(position1 > songList.size())
{
String nextSong = songList.get(0).getPathSong();
Song next = songList.get(0);
((MainActivity)getActivity()).playerStart(nextSong, next);
}else{
String nextSong = songList.get(position1+1).getPathSong();
Song next = songList.get(position1 + 1);
((MainActivity)getActivity()).playerStart(nextSong, next);
}
}
}
public void getPrevious(Song currentSong) {
int position = (int) (currentSong.getID() - 1);
if(position < 0)
{
String previousSong = songList.get(songList.size()).getPathSong();
Song previous = songList.get(songList.size());
((MainActivity)getActivity()).playerStart(previousSong, previous);
}else{
String previousSong = songList.get(position).getPathSong();
Song previous = songList.get(songList.size());
((MainActivity)getActivity()).playerStart(previousSong, previous);
}
}
}
公共类MyMusic扩展片段{
私有静态final int MY_PERMISSION_REQUEST=1;
SongScreen SongScreen=新的SongScreen();
静态ArrayList歌曲列表=新ArrayList();;
列表视图;
弦乐歌曲名称,歌曲艺术家,durationSong,歌曲专辑;
歌曲;
内部位置;
公共音乐()
{}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.my_music,container,false);
//列表视图
songView=(ListView)view.findViewById(R.id.my_music);
songList=newarraylist();
如果(ActivityCompat.checkSelfPermission)(getContext(),
Manifest.permission.READ(外部存储)!=PackageManager.permission(已授予){
如果(ActivityCompat.shouldShowRequestPermissionRegulation)(getActivity(),
android.Manifest.permission.READ\u外部存储){
ActivityCompat.requestPermissions(getActivity(),
新字符串[]{android.Manifest.permission.READ\u EXTERNAL\u STORAGE},MY\u permission\u REQUEST);
}否则{
ActivityCompat.requestPermissions(getActivity(),
新字符串[]{android.Manifest.permission.READ\u EXTERNAL\u STORAGE},MY\u permission\u REQUEST);
}
}否则{
accessfiles();
}
返回视图;
}
公共void accessfiles(){
//songList=newarraylist();
光标歌曲=getMusic();
SongAdapter songAdt=新的SongAdapter(this.getContext(),songList);
songView.setAdapter(songAdt);
//当你点击项目时,传递给一个包含所有信息的新片段
songView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串songTitle=((TextView)view.findViewById(R.id.titleSong)).getText().toString();
String songArtist=((TextView)view.findViewById(R.id.artistSong)).getText().toString();
字符串durationSong=((TextView)view.findViewById(R.id.songDuration)).getText().toString();
Song currentSong=songList.get(位置);
String songAlbum=currentSong.getAlbum();
passingToScreen(歌曲标题、歌曲艺术家、durationSong、歌曲专辑);
//路有歌的路
字符串路径=currentSong.getPathSong();
((MainActivity)getActivity()).playerStart(路径,currentSong);
}});
}
private void passingToScreen(弦乐歌曲标题、弦乐歌曲艺术家、弦乐歌曲持续时间、弦乐歌曲专辑){
Bundle=新Bundle();
bundle.putString(“songTitle”,songTitle);
bundle.putString(“歌曲艺术家”,歌曲艺术家);
bundle.putString(“durationSong”,durationSong);
bundle.putString(“songAlbum”,songAlbum);
FragmentManager FragmentManager=getActivity().getSupportFragmentManager();
FragmentTransaction FragmentTransaction=fragmentManager.beginTransaction();
songScreen.setArguments(bundle);
fragmentTransaction.replace(R.id.layoutCM,
歌幕,
songScreen.getTag()).commit();
}
公共音乐(){
上下文=getContextOfApplication();
ContentResolver ContentResolver=context.getContentResolver();
Uri songUri=MediaStore.Audio.Media.EXTERNAL\u CONTENT\u Uri;
Cursor-songcursor=contentResolver.query(songUri,null,null,null);
if(songcursor!=null&&songcursor.moveToFirst()){
int-songId=songcursor.getColumnIndex(MediaStore.Audio.Media.\u-ID);
int-songTitle=songcursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int songArtist=songcursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int songAlbum=songcursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int songDuration=songcursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
int-pathSong=songcursor.getColumnIndex(MediaStore.Audio.Media.DATA);
做{
Long currentId=songcursor.getLong(songId);
String currentTitle=songcursor.getString(songTitle);
String currentArtist=songcursor.getString(songArtist);
String currentAlbum=songcursor.getString(songAlbum);
Long currentDuration=songcursor.getLong(songDuration);
String currentPath=songcursor.getString(pathSong);
添加(新歌(currentId、currentTitle、currentArtister、currentDuration、currentAlbum、currentPath));
}
while(songcursor.moveToNext());
}
返回宋光标;
}
@凌驾
public void onRequestPermissionsResult(int-requestCode、字符串[]权限、int[]grantResults){
开关(请求代码){
案例我的许可请求:{
如果(grantResults.length>0&&grantResults[0]==已授予PackageManager.PERMISSION){
if(ContextCompat.checkSelfPermission(getContext()),
Manifest.permission.READ_EXTERNAL_STORAGE)==PackageManager.permission_provided){
accessfiles();
}
}
}
}
}
公共无效getNext(歌曲当前歌曲){
if(songList.contains(currentSong))
{
int position1=songList.indexOf(当前歌曲);
if(position1>songList.size())
{
String nextSong=songList。
public AppCompatActivity mActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.mActivity = (BaseActivity) context;
}
((MainActivity)mActivity).playerStart(previousSong, previous);