我是Android开发人员的新手,我目前正在努力解决这个恼人的问题好几天。 尝试谷歌和许多文章。没人帮忙。还尝试了IRC的一些在线帮助,但无法得到一个直接的答案。也许你可以指引我朝着正确的方向前进......
我的应用程序基本上是一个包含单个Fragment类的ViewPager。在Fragment类中,有一个switch case块,它根据位置确定要从resources文件夹加载哪个图像。问题是,我的父Activity中有一个TextView视图需要根据当前图片进行更新。像图像标题。 我用过:
TextView tv = (TextView) getActivity().findViewById(R.id.titleTV);
在onCreateView()中从Fragment中访问该TextView。并补充说:
tv.setText("Picture 1");
例如,谢谢
答案 0 :(得分:0)
好的我会给出一段代码,你可以使用它,不仅仅用于String
,而是用于从Fragment发送到Activity的所有数据,甚至是其他类型的数据彼此之间的课程。
这就是代码的类型也用在.'setOnSomethingHappenListener(listener);'
public interface TitleChangeListener{
public void onTitleChanged(String title);
}
然后根据您的活动
public class MyActivity extends Activity implements TitleChangeListener{
@Override
onTitleChanged(String title){
// set here your value
}
}
然后在你的片段上
public void MyFragment extends Fragment{
private TitleChangeListener listener;
@Override
public void onAttach(Activity activity){
if(activity instanceof TitleChangeListener)
listener = (TitleChangeListener)activity;
else
// throw some error ???
}
@Override
public void onResume(){
listener.onTitleChanged("my title");
}
}
记得我心里输入了所有这些,肯定会有一些小错误。
但是按照这个想法,你会没事的。
答案 1 :(得分:0)
如果您只能根据当前片段位置确定文本,则可以使用ViewPager.OnPageChangeListener。在您的Activity中实现该接口并通过调用mViewPager.setOnPageChangeListener(SomeOnPageChangeListener)
来使用它。使用TextView
方法确定放入OnPageChangeListener.onPageSelected()
的文字。
不幸的是,SDK中有bug,而第一次显示时,第0位的页面没有调用onPageSelected()。您可以在上述链接下找到解决方法,使用ViewPager.setCurrentPage(1)
或只在onCreate()
方法中手动设置该位置的文字。
示例代码:
//activity onCreate()
protected void onCreate(Bundle savedInstanceState) {
...
mTextView = (TextView) findViewById(R.id.text_view);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
String someText = determineText(position)
mTextView.setText(someText);
});
//because onPageSelected will not be called for page 0 first time
String someText = determineText(0)
mTextView.setText(someText);
}
private String determineText(int position){ //static?
//switch?
}