2014-11-24 95 views
0

我有一个包含字符串的fragmentactivity。我想将该字符串传递给另一个片段。我怎样才能做到这一点。我在这里找到一些链接,通过FragmentPagerAdaptor发送字符串从FragmentActivity到片段

Access to getString() in a fragment that implements a viewpagerHow do I pass a variable through a FragmentPagerAdapter to a Fragment?

但不知何故,我真的不知道那里正在做什么。任何人都可以指出我的情况下要做什么?

粘贴代码如下:

片段活动

public class AdaptorMain extends FragmentActivity implements ActionBar.TabListener { 

    private ViewPager viewPager; 
    private TabsPagerAdaptor mAdaptor; 
    private ActionBar actionBar; 
    private String vehicleNumber; 



    public String getVehicleNumber() { 
     return vehicleNumber; 
    } 
    public void setVehicleNumber(String vehicleNumber) { 
     this.vehicleNumber = vehicleNumber; 
    } 

    private String[] tabs = {"Vehicle Asset", "Human Asset", "Base Info"}; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     Log.w("in adaptor","in adaptor activity"); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.adaptor_main); 
     Intent intent = getIntent(); 
     vehicleNumber = intent.getExtras().getString("KEY"); 
     Log.w("vehicle received is", "Number" + vehicleNumber); 


     viewPager = (ViewPager) findViewById(R.id.pager); 
     actionBar = getActionBar(); 
     mAdaptor = new TabsPagerAdaptor(getSupportFragmentManager()); 

     viewPager.setAdapter(mAdaptor); 
     actionBar.setHomeButtonEnabled(false); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

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

     viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       // TODO Auto-generated method stub 
       actionBar.setSelectedNavigationItem(position); 
      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onPageScrollStateChanged(int arg0) { 
       // TODO Auto-generated method stub 

      } 
     }); 

    } 
    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     viewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 
} 

FragmentPagerAdaptor:

public class TabsPagerAdaptor extends FragmentPagerAdapter { 

    public TabsPagerAdaptor(FragmentManager fragmentManager) { 
     super(fragmentManager); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int index) { 
     // TODO Auto-generated method stub 
     switch(index){ 
     case 0 : 
      return new VehicleAssetTab(); 
     case 1: 
      return new HumanAssetTab(); 
     case 2: 
      return new BaseInfoTab(); 
     } 
     return null; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 3; 
    } 
} 

片段

public class VehicleAssetTab extends Fragment{ 
    String vehicleNumber; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.vehicle_asset_tab, container, false); 

     TextView tv1 = (TextView) rootView.findViewById(R.id.textView2);  
     //Log.w("vehicle number in tab", "number: " + vehicleNumber); 
     //tv1.setText(obj.vehicleNumber);   
     return rootView; 
    } 
} 

谢谢

回答

1

尝试这样,

在片段活动

mAdaptor = new TabsPagerAdaptor(getSupportFragmentManager(),vehicleNumber); 

在FragmentPagerAdaptor &,

String mvehicleNumber; 

public TabsPagerAdaptor(FragmentManager fragmentManager,String vehicleNumber) { 
     super(fragmentManager); 
     this.mvehicleNumber = vehicleNumber; 
    } 

@Override 
    public Fragment getItem(int index) { 
     // TODO Auto-generated method stub 
     switch(index){ 
     case 0 : 
      return new VehicleAssetTab(mvehicleNumber); 
     } 
     return null; 
    } 

在片段

String mvehicleNumber; 

public VehicleAssetTab(String vehicleNumber) { 
     this.mvehicleNumber = vehicleNumber; 
    } 

希望它会帮助你

+0

谢谢.. :)它的工作就像我希望它.. – Anvith 2014-11-24 05:43:50

1

FragmentActivity改变这一行

mAdaptor = new TabsPagerAdaptor(getSupportFragmentManager(),vehicleNumber); 

FragmentPagerAdapter

public class TabsPagerAdaptor extends FragmentPagerAdapter { 
String vehicleNumber; 
public TabsPagerAdaptor(FragmentManager fragmentManager,String vehicleNumber) { 
    super(fragmentManager); 
    this.vehicleNumber = vehicleNumber; 
    // TODO Auto-generated constructor stub 
} 

@Override 
public Fragment getItem(int index) { 
    // TODO Auto-generated method stub 

    Bundle args = new Bundle(); 
    args.putString("vehicleNumber", vehicleNumber); 


    switch(index){ 
    case 0 : 
     VehicleAssetTab vehicle = VehicleAssetTab(); 
     vehicle.setArguments(args); 
     return vehicle ; 

    case 1: 
     HumanAssetTab human = HumanAssetTab(); 
     human.setArguments(args); 
     return human ; 

    case 2: 
     BaseInfoTab base= BaseInfoTab(); 
     base.setArguments(args); 
     return base; 
    } 
    return null; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return 3; 
} 

}

片段

public class VehicleAssetTab extends Fragment{ 
String vehicleNumber; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    vehicleNumber = getArguments().getString("vehicleNumber ", "defaultString"); 
    View rootView = inflater.inflate(R.layout.vehicle_asset_tab, container, false); 

    TextView tv1 = (TextView) rootView.findViewById(R.id.textView2);  
    Log.w("vehicle number in tab", "number: " + vehicleNumber); 
    tv1.setText(vehicleNumber);   
    return rootView; 
} 
} 
+0

谢谢..能解决我的概率.. :) – Anvith 2014-11-24 06:00:25

+0

尼斯工作约翰。 – 2016-07-20 09:55:15