gpt4 book ai didi

android - 转到 ViewPager 中的下一页

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:04:36 25 4
gpt4 key购买 nike

我的 MainActivity 中有一个 ViewPager。其中的每一页都是一个 fragment 。因此,每次我向右或向左滑动时,都会创建一个新的 fragment 实例,并相应地更新 fragment View 。

我还有两个按钮:LEFTRIGHT 用于导航。这些按钮在 Fragment 中,而不是在 Activity 中。用户可以滑动或按相关按钮在页面之间导航。

这就是问题所在:由于我通过 MainActivity 更改 View ,我如何检测 Activity 中那些按钮的 onClick 事件以更新 fragment ?

这是 PagerAdapter 类(从各处删除了所有不相关的代码):

public class SectionsPagerAdapter extends FragmentPagerAdapter {

public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {

// logic part for the views.

return PlaceholderFragment.newInstance(sectionNumber, questionStatus, questionOrder, showNext, showPrevious);
}

这是 PlaceHolderFragment 类:

public class PlaceholderFragment extends Fragment{

//some global variables

public static PlaceholderFragment newInstance(int sectionNumber, int questionStatus, String questionOrder, boolean showNext, boolean showPrevious) {
PlaceholderFragment fragment = new PlaceholderFragment();

//setting up the arguments
fragment.setArguments(args);
return fragment;
}

public PlaceholderFragment() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.explanation_fragment, container, false);

//code for filling up all the views

RightButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//can I do something here?
}
});

return rootView;
}
}

更多信息:我必须将导航按钮保留在 fragment 本身而不是 Activity 中。

最佳答案

在你的 fragment 中写一个接口(interface),如:

public class PlaceholderFragment extends Fragment{
private OnButtonClickListener mOnButtonClickListener;

interface OnButtonClickListener{
void onButtonClicked(View view);
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mOnButtonClickListener = (OnButtonClickListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(((Activity) context).getLocalClassName()
+ " must implement OnButtonClickListener");
}
}

yourButtons.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnButtonClickListener.onButtonClicked(v);
}
});
}

在你的主要 Activity 中:

class MainActivity extends AppCompatActivity implements   OnButtonClickListener{

@Override
void onButtonClicked(View view){
int currPos=yourPager.getCurrentItem();

switch(view.getId()){

case R.id.leftNavigation:
//handle currPos is zero
yourPager.setCurrentItem(currPos-1);
break;

case R.id.rightNavigation:
//handle currPos is reached last item
yourPager.setCurrentItem(currPos+1);
break;
}
}
}

关于android - 转到 ViewPager 中的下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36600229/

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