2015-08-25 25 views
0

我有7個選項卡及其共享片段,其數據取決於從url接收到的XML。問題是如果我設置了setOffscreenPageLimit(6)並且對於第一個標籤,對於標籤編號1,一切都很好,但標籤編號2到7顯示了來自應該顯示在最後一個標籤中的url的數據。使用ViewPager重複使用ListFragment

viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager(), this, negeri); 
    viewPager.setAdapter(mAdapter); 
    viewPager.setOffscreenPageLimit(6); 
    actionBar.setHomeButtonEnabled(true); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setTitle("List"); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);   


    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 

    } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 


     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 

     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 

FragmentStatePagerAdapter;

public class TabsPagerAdapter extends FragmentStatePagerAdapter { 

static Context context; 
static Resources res = null; 
static String[] CONTENT = null; 



public TabsPagerAdapter(FragmentManager fm, Context c, String negeri) { 
    super(fm); 

    context = c; 

    res = context.getResources(); 



     CONTENT = res.getStringArray(R.array.values); 






} 


@Override 
public ListFragment getItem(int index) { 


    return DaerahFragment.newInstance(CONTENT[index]); 



} 


@Override 
public int getCount() { 
    // get item count - equal to number of tabs 
    return CONTENT.length; 
} 

public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 

}

ListFragment;

public static ListFragment newInstance(String daerahVal) { 
    // TODO Auto-generated method stub 
    Bundle args = new Bundle(); 
    args.putString(ARG_DAERAH, daerahVal); 
    DaerahFragment fragment = new DaerahFragment(); 
    fragment.setArguments(args); 
    return fragment; 
} 


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


     // Bundle args = getArguments(); 
     //String daerah=args.getString("daerah"); 

     daerah = getArguments().getString(ARG_DAERAH); 

     Toast.makeText(getActivity(), "daerah= " + daerah , Toast.LENGTH_SHORT).show(); 




     URL = "http://www.url.com/android/daerahMarker.php?daerah="+daerah; 


     setRetainInstance(true); 


     if (mListViewScrollPos != null && adapter != null) { 
      getListView().onRestoreInstanceState(mListViewScrollPos); 
     } else { 

     myTask = new TalkToServer(); 
     myTask.execute(); 

     } 


     } 

TQ

+0

最新的問題? – k0sh

+0

選項卡編號2到7顯示來自應該顯示在最後一個選項卡中的url的數據。 –

+0

你不需要發送參數並創建片段的靜態實例,片段就像任何pojo(模型)類,你可以傳遞任何setter給它,例如在你的適配器onItem你可以做MyFragment fragment = new MyFragment() ; fragment.setUrl(MyUrl.get(position));返回fragement。 – k0sh

回答

0

我解決了這個

只是刪除靜態

static String URL = ""; 

String URL = ""; 

:)