2016-03-25 17 views
1

android programlama için oldukça yeni ve Player'ın Fragment numaralı kitabından bir şarkının dizinini göndermeye ve ardından şarkıyı otomatik olarak çalmaya başladım. Şimdiye kadar sahip olduğum kodla, bir ListItem tıklandığında hiçbir şey olmuyor. Ve ben hiçbir şeyi kastetmiyorum. Beklediğim gibi bile çökmedi. İşte Herhangi bir yardım hiç çok takdirÖzel bir müzik çalara şarkı dizini nasıl gönderilir?

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_library, container, false); 

    songView = (ListView)rootView.findViewById(R.id.song_list); 
    songList = new ArrayList<>(); 

    getSongList(); 

    Collections.sort(songList, new Comparator<Song>() { 
     public int compare(Song a, Song b) { 
      return a.getTitle().compareTo(b.getTitle()); 
     } 
    }); 

    songView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      // Getting list item index 
      int songIndex = position; 

      // Starting new intent 
      Intent in = new Intent(getActivity().getApplicationContext(), LibraryFragment.class); 
      // Sending songIndex to Player Fragment 
      in.putExtra("songIndex", songIndex); 
      getActivity().setResult(100, in); 

     } 
    }); 

    SongAdapter songAdt = new SongAdapter(getActivity(), songList); 
    songView.setAdapter(songAdt); 

    return rootView; 
} 

PlayerFragment

@Override 
public void onActivityResult(int requestCode, 
           int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode == 100){ 
     currentSongIndex = data.getExtras().getInt("songIndex"); 
     playSong(currentSongIndex); 
    } 

} 

kodu ...

LibraryFragment olduğunu! Şerefe!

cevap

0

Parçalar için Intents kullanamazsınız, bunlar başlatılamaz. Ayrıca, getActivity().setResult(100, in); ne yapar? Kesinlikle yanlış kullanırsın.

Parça iletişiminde lütfen official documentation'u okuyun. Ayrıntılı olarak


  • için LibraryFragment ihtiyaçları, örneğin bir arabirim tanımlamak

public interface LibraryListener { void onIndexSelected(int index) }

  • etkinlik bu arabirim uygulamak zorundadır. Bu uygulamada, endeksi PlayerFragment'a teslim etmelidir, bu da bunu yapmak için bir kamu yöntemi tanımlamalıdır.

  • Şimdi LibraryFragment sayesinde ((LibraryListener)getActivity()).onIndexSelected(index);

+0

Ah çağırabilir. Dizini nasıl göndereceğimi biliyor musun? Hala biraz kafam karıştı. – Cryosin

+0

Kısa bir örnek verdim. Ne bu ne de belgenin içindeki örneği anlıyorsanız geri adım atmalı ve arayüzlerin ve yayınların Java'da nasıl çalıştığını öğrenmelisiniz. – F43nd1r

İlgili konular