将Android ListView onClick连接到另一个活动

时间:2015-04-27 00:41:08

标签: android android-activity mp3 android-sdcard onitemclick

我正在制作MP3播放器Android应用程序。我想从ListView点击启动另一个活动,打开艺术家目录以显示该艺术家的歌曲。我的代码基于[Android教程] [1]。

以下是我在ArtistList.java中的onCreate

    ListView lv = getListView();
    lv.setOnItemClickListener(new OnItemClickListener() {

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

            Intent intent = new Intent(getApplicationContext(), SongList.class);

            String artistSongPath = artistsList.get(position).get("artistPath");//gets artist SDcard path

            System.out.println("artistSongPath = " + artistSongPath); //prints out correct path

            intent.putExtra("A_S_PATH", artistSongPath); //puts the artistSongPath static A_S_Path

            startActivity(intent); //start the intent
        }
    });

在我的ArtistList.java的顶部,我有

    public final static String A_S_PATH = "wecode.mp3playerapp.MESSAGE";

在我的SongList.java

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.song_list);

    Intent intent = getIntent();
    String path = intent.getStringExtra(ArtistList.A_S_PATH) + "/";
    System.out.println(path);
    try {
        File fp = new File(path);
        findArtistSongs(fp);
    }catch(NullPointerException npe){
        System.out.println("Could not find path.");
    }

}

A_S_Path为空,我没有进入我的捕获。请帮忙!这是我的第一个应用!!

2 个答案:

答案 0 :(得分:0)

更改此

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.song_list);

    Intent intent = getIntent();
    String path = intent.getStringExtra("A_S_PATH") + "/"; //here is the line that I changed
    System.out.println(path);
    try {
        File fp = new File(path);
        findArtistSongs(fp);
    }catch(NullPointerException npe){
        System.out.println("Could not find path.");
    }

答案 1 :(得分:0)

在您的ArtistList.java中,您有:

intent.putExtra("A_S_PATH", artistSongPath);

但是在SongList.java中,你有:

String path = intent.getStringExtra(ArtistList.A_S_PATH) + "/";

您是否注意到&#34; A_S_PATH&#34; 与您定义的 ArtistList.A_S_PATH 不同?