gpt4 book ai didi

java - ImageView 上的 setBackgroundResource 返回 null

转载 作者:行者123 更新时间:2023-12-01 12:35:58 24 4
gpt4 key购买 nike

我在我的 android 项目中使用 ListFragment。我决定制作一个listView,每个listview项目由音乐频率imageView组成。我将尝试对音乐频率的 imageView 进行动画处理。每个listView都有一个名为“播放”的按钮,一旦单击“播放”,音乐频率就会开始动画。

public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragmentmusiclist, container, false);
lv = (ListView) v.findViewById(R.id.list);


mp = new MediaPlayer();
mp = null;

Song s1 = new Song("Love Story",(float) 2.5, onMusicPlayListener);
Song s2 = new Song("Sad Story",(float) 1.0, onMusicPlayListener);
Song s3 = new Song("Breakup Story",(float) 3.5, onMusicPlayListener);

songs = new ArrayList<Song>();
songs.add(s1);
songs.add(s2);
songs.add(s3);

adapter = new MusicListAdapter(getActivity(),songs);
setListAdapter(adapter);


return super.onCreateView(inflater, container, savedInstanceState);
}

OnClickListener onMusicPlayListener = new OnClickListener() {

@Override
public void onClick(View v) {
final int position = getListView().getPositionForView((LinearLayout)v.getParent());
animMusicFreq = (ImageView) v.findViewById(R.id.music_anim);
animMusicFreq.setBackgroundResource(R.anim.anim_music);
animMusicFreq.post(new Runnable() {

@Override
public void run() {
AnimationDrawable frameAnimation =
(AnimationDrawable) animMusicFreq.getBackground();
frameAnimation.start();
}

});

最佳答案

您在 onCreateView 中膨胀了您的 View ,但没有将其传递给系统。相反,你告诉它自己膨胀(你返回 super )。这没有任何意义。

您应该像这样返回您的 v View :

public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragmentmusiclist, container, false);
// ...
return v;
}

关于java - ImageView 上的 setBackgroundResource 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com