gpt4 book ai didi

java - 如何根据ViewPager中当前的ImageView更新父Activity中的TextView

转载 作者:行者123 更新时间:2023-12-01 04:45:54 25 4
gpt4 key购买 nike

我是 Android 开发新手,目前我已经为这个恼人的问题苦苦挣扎了好几天。尝试了谷歌和很多文章。没有任何帮助。还尝试了 IRC 以获得一些在线帮助,但无法得到直接答案。也许你可以指引我正确的方向......

我的应用程序基本上是一个包含单个 Fragment 类的 ViewPager。在 Fragment 类内部,有一个 switch case block ,用于根据位置确定从资源文件夹加载哪个图像。问题是,我的父 Activity 中有一个 TextView View ,需要根据当前图片进行更新。就像图片标题一样。我用过:

TextView tv = (TextView) getActivity().findViewById(R.id.titleTV);

在 onCreateView() 中从 Fragment 内访问该 TextView。并添加了一个:

tv.setText("Picture 1");

例如,到 switch case block 。这样,当显示图片时, TextView 就会更新。问题是,每张幻灯片检索一个新 Fragment 的方法(父 Activity 中的 getItem(intposition))都会被调用两次,以将多个 Fragment 加载到内存中。这会导致当前位置领先 1 个整数。意思是,例如,switch case 位于 case 0 上,它显示特定的图片,但文本从 case 1 更新。因此我无法让它正常工作。我做错了什么??

谢谢

最佳答案

如果您能够根据当前 fragment 位置确定文本,则只能使用 ViewPager.OnPageChangeListener 。在您的 Activity 中实现该接口(interface)并通过调用 mViewPager.setOnPageChangeListener(SomeOnPageChangeListener) 来使用它。使用 OnPageChangeListener.onPageSelected() 方法确定将哪些文本放入 TextView 中。

不幸的是有一个bug在SDK中,第一次显示位置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?
}

关于java - 如何根据ViewPager中当前的ImageView更新父Activity中的TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15848848/

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