有两个错误我都无法弄清楚原因。
getContentResolver()
” 2.Cannot推断参数(在new ArrayAdapter<>()
上)。
我希望这是从fragment
获取歌曲列表的正确方法吗?如果有更好的选择,请解释一下。谢谢
public class SongsFragment extends Fragment {
public SongsFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_songs, container, false);
ListView audioView = (ListView)view.findViewById(R.id.songView);
ArrayList<String> audioList = new ArrayList<>();
String[] proj = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME};
final Cursor audioCursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, null, null);
if (audioCursor != null) {
if (audioCursor.moveToFirst()) {
do {
int audioIndex = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
audioList.add(audioCursor.getString(audioIndex));
} while (audioCursor.moveToNext());
}
}
audioCursor.close();
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1, audioList);
audioView.setAdapter(adapter);
return view;
}
}
答案 0 :(得分:1)
在扩展Fragment
的类中,无法使用上下文来获取它需要使用getActivity()
方法。
1。 无法解析方法“getContentResolver()”
由于getContentResolver
类中没有Fragment
方法,因此需要用户上下文来访问它:
final Cursor audioCursor = getActivity().getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
2. 无法推断参数(在新的ArrayAdapter&lt;&gt;()上)。
因为ArrayAdapter
构造函数需要有效的Context
作为第一个参数:
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,
android.R.id.text1, audioList);