我正在使用 aViewPager
并且我有三个片段Fragment A, Fragment B and Fragment C
可以在其中Fragment A
进行Fragment B
交流Fragment C
。我已经实现了通信逻辑,但问题是:我无法刷新/更新Fragment C
数据何时从Fragment B
. Fragment A
通信时一切正常Fragment C
:根据传递的数据更新视图。
Fragment C
这是一个MediaPlayer
...它播放从 通信的媒体 url Fragment B
,但布局发生了变化。有人可以告诉我这里发生了什么。这是我到目前为止所做的:
界面
public interface MediaInterface {
public void onPodCastClick(int position,
ArrayList<HashMap<String, String>> toPass);
}
在片段 A 和 B
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
String title = data.get(position).get("Title").toString();
SM.setCurrentPlayedID(title);
popPass.onPodCastClick(position, data);
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
try{
popPass = (MediaInterface)getActivity();
} catch(ClassCastException e){
Log.i(tag, "Activity " + getActivity().getClass().getSimpleName()
+ " does not implement the MediaInterface");
e.printStackTrace();
}
}
popPass
的一个实例在哪里MediaInterface
。
在 MainActivity(实现 ViewPager 的地方)
@Override
public void onPodCastClick(int position,
ArrayList<HashMap<String, String>> toPass) {
// TODO Auto-generated method stub
Bundle element = new Bundle();
element.putSerializable("toPass", toPass);
element.putInt("position", position);
Fragment toGo = new FragmentC();
toGo.setArguments(element);
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.add(toGo, "FragmentC").commit();
pager.setCurrentItem(FRAGMENT_C);
}
在片段 C
Bundle element = getActivity().getSupportFragmentManager()
.findFragmentByTag("FragmentC").getArguments();
根据 Bundle 中的元素在视图中进行了更改。
请帮我弄清楚发生了什么以及如何刷新这个片段。
我也确实从android 开发人员文档中看到了这一点……但他们没有提到更新 UI 的方法。