2014-01-15 53 views
0

我正在開發Android應用程序。在我的應用程序中,我必須使用5片段,並從片段1到5刷卡。所以我使用了一個FragmentActivity,FragmentPagerAdapter和5個片段。 現在我可以通過所有的片段刷卡,並且可以使用更改FragmentPagerAdapter適配器在片段按鈕上的位置點擊

ViewPager.OnPageChangeListener() 

我必須添加在所有的碎片和按鈕點擊按鈕必須打開,如滑動在未來片段識別當前的片段。我怎麼能這樣做?在這裏,我發佈了一些我的代碼片段。

fragmentactivity.java 

public class HomeScreen extends FragmentActivity 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.themed_circles); 

    mAdapter = new InsuranceFragmentAdapter(getSupportFragmentManager(), 
      HomeScreen.this); 
    mPager = (ViewPager) findViewById(R.id.pager); 
    mPager.setAdapter(mAdapter); 
    mIndicator = (CirclePageIndicator) findViewById(R.id.indicator); 
    mIndicator.setViewPager(mPager); 
    // mIndicator.setCurrentItem(2); 

    mIndicator 
      .setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
       private int pos; 

       @Override 
       public void onPageSelected(int position) { 

       } 

       @Override 
       public void onPageScrolled(int position, 
         float positionOffset, int positionOffsetPixels) { 


       } 

       @Override 
       public void onPageScrollStateChanged(int state) { 
        System.out.println("test scroll state" + state); 

       } 
      }); 
} 

    } 

以下是我用於滑動片段的FragmentPagerAdapter。

FragmentPagerAdapter.java 


public class InsuranceFragmentAdapter extends FragmentPagerAdapter { 
Context contx; 


public InsuranceFragmentAdapter(FragmentManager fm, Context ctx) { 

    super(fm); 
    this.contx = ctx; 


} 

@Override 
public Fragment getItem(int position) { 
    Fragment fragment = null; 
    switch (position) { 
    case 0: 
     fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentBasicPersonal.class.getName()); 
     break; 

    case 1: 
     fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentationNomineeDetails.class.getName()); 
     break; 

    } 

    return fragment; 
} 

@Override 
public int getCount() { 

    return 2; 
} 



public void setCount(int count) { 

} 

}

和我的片段之一如下。 fragment_one.java

public class FragmentFemale extends Fragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View layout = inflater.inflate(R.layout.fragment_female_husband, container, false); 
      next= (Button) layout.findViewById(R.id.save); 
      next.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
        //need to change to next fragment 
      } 
      } 
     return layout; 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
    // outState.putString(KEY_CONTENT, mContent); 
    } 
} 

請幫助解決我的問題。

+0

codedroid的這則訊息的答案讓我:http://stackoverflow.com/questions/16644853/viewpager-adapter-in-fragment-laggy-swiping – owe

回答

1

我會將下一個按鈕插入到片段活動中,而不是在每個片段中插入相同的按鈕。但當然這取決於你的設計。如果您只想要一個下一個按鈕,您可以使用sherlock欄並將您的按鈕保持在屏幕上。

如果您的設計需要在片段內部有按鈕,那麼我會使用接口。您可以監聽片段活動中片段的點擊事件。並根據片段位置設置您的片段尋呼機適配器當前項目。

但無論如何,請查看本教程。我相信這會有所幫助。

Vogella Fragments Tutorial

+0

感謝...你救我的一天.. :) – sarath

+0

你的歡迎,歡呼聲。 – osayilgan