2015-08-25 3 views
0

У меня есть 7 вкладок и их общий фрагмент, данные которого зависят от XML, полученного от url. Проблема в том, что если я устанавливаю setOffscreenPageLimit (6) и для первой вкладки, все отлично подходит для вкладки номер 1, но на вкладках с номера 2-7 отображаются данные из url, которые должны отображаться на последней вкладке.Повторное использование ListFragment с ViewPager

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 (model), который вы могли бы передать любому его устройству, например, в вашем адаптере onItem вы могли бы сделать MyFragment fragment = new MyFragment() ; fragment.setUrl (MyUrl.get (позиция)); обратная градация. – k0sh

ответ

0

я решил эту

просто удалить статический

static String URL = ""; 

к

String URL = ""; 

:)