当imageView onclick时,ViewPager滑动到下一页

时间:2014-06-17 04:27:21

标签: android android-activity android-fragments

当imageView onclick时,我有一个关于ViewPager幻灯片到下一页的问题 目前,我有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>

非常感谢:)

1 个答案:

答案 0 :(得分:1)

// 片段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();

                }
           });
}

<强> MainActivity

public void changeFragment(){
pager.setCurrentItem(1);
}

我做的是:

  • 在片段onCreateView
  • 中设置imageView的侦听器
  • 向主活动添加一个公共方法,名为changeFragment,用于设置当前的viewPager项。
  • 从侦听器调用此方法。