我有一个关于 ViewPager 在 imageView onclick 时滑动到下一页的问题 目前,我有 2 个 ViewPager 页面,每个页面都有不同的布局 我在 first_frag.xml 上创建了一个按钮,并尝试将 onClick Listener 设置为 FirstFragment 类,但它不起作用,有帮助吗?这里附上我的来源:
MainActivity.java
public class MainActivity extends FragmentActivity {
public ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0: return FirstFragment.newInstance("First Page");
case 1: return SecondFragment.newInstance("Second Page");
default: return FirstFragment.newInstance("Default");
}
}
@Override
public int getCount() {
return 2;
}
}
}
FirstFragment.java
public class FirstFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.first_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragFirst);
tv.setText(getArguments().getString("msg"));
return v;
}
public static FirstFragment newInstance(String text) {
FirstFragment f = new FirstFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
SecondFragment.java
public class SecondFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.second_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragSecond);
tv.setText(getArguments().getString("msg"));
return v;
}
public static SecondFragment newInstance(String text) {
SecondFragment f = new SecondFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
}
first_frag.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" >
<TextView
android:id="@+id/TestString"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Testing String"
android:textColor="@android:color/white"
android:textSize="26dp" />
<TextView
android:id="@+id/tvFragFirst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:layout_marginRight="24dp"
android:layout_marginTop="50dp"
android:text="TextView"
android:textColor="@android:color/white"
android:textSize="26dp" />
<ImageView
android:id="@+id/thisButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:src="@drawable/nextPage"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
second_frag.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_dark" >
<TextView
android:id="@+id/tvFragSecond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="TextView"
android:textColor="@android:color/white"
android:textSize="42dp" />
<ListView
android:id="@+id/listing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="30dp" >
</ListView>
</RelativeLayout>
非常感谢:)
最佳答案
// fragment 1:
View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.second_frag, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragSecond);
tv.setText(getArguments().getString("msg"));
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ImageView iv = (ImageView) v.findViewById(R.id.thisButton);
iv.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
MainActivity mActivity = (MainActivity) getActivity():
mActivity.changeFragment();
}
});
}
主 Activity
public void changeFragment(){
pager.setCurrentItem(1);
}
我所做的是:
- 在 fragment onCreateView 中为 imageView 设置监听器
- 向主 Activity 添加一个名为 changeFragment 的公共(public)方法,用于设置当前 viewPager 项。
- 从监听器调用此方法。
关于android - ImageView onclick时ViewPager滑动到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24255717/