Подключение Android ListView onClick к другому действию
Я делаю приложение для MP3-плеера для Android. Я хочу начать другое действие с помощью щелчка ListView, который открывает каталог исполнителя, чтобы показать песни этого одного исполнителя. Я основал свой код на [учебник по Android][1].
Это ниже в моем onCreate в ArtistList.java
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 имеет значение null, и я не попадаю в ловушку. Пожалуйста помоги! Это мое первое приложение!
2 ответа
Решение
Изменить это
@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.");
}
В вашем ArtistList.java у вас есть:
intent.putExtra("A_S_PATH", artistSongPath);
Но в SongList.java у вас есть:
String path = intent.getStringExtra(ArtistList.A_S_PATH) + "/";
Вы заметили, что "A_S_PATH" отличается от ArtistList.A_S_PATH, который вы определили?