Je veux passer une intention de mon SherlockActivity à mon SherlockFragment mais je ne comprends pas comment faire cela. Je veux passer le CategoryID dans MaterialsActivity à BooksFragment ci-dessous. Le code de l'MaterialActivity est ci-dessous et à l'extrémité lointaine le BooksFragment est collé.Essayer de passer une intention d'un SherlockFragment à SherlockFragment
public class MaterialsActivity extends SherlockFragmentActivity{
String categoryID = null;
Context context = null;
Resources resources = null;
IDatabaseHelper databaseHelper = null;
// store the active tab here
public static String ACTIVE_TAB = "activeTab";
//Initializing the Tab Fragments that would be added to this view
AudiosFragment audioFragment = null;
BooksFragment bookFragment = null;
VideosFragment videoFragment = null;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.materials);
Intent intent = getIntent();
categoryID = intent.getExtras().getString("categoryID");
context = MaterialsActivity.this;
resources = getResources();
databaseHelper = new DatabaseHelper(context);
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// add tabs
Tab tab1 = actionBar.newTab()
.setText("Books")
.setTabListener(new BooksListener<BooksFragment>(
this, "book", BooksFragment.class));
actionBar.addTab(tab1);
// check if there is a saved state to select active tab
if(savedInstanceState != null){
getSupportActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(ACTIVE_TAB));
}
new CollectMaterials(context,resources).execute();
}
//This is the BooksFragment Listener that would make the Tab components to listener to a tab click events
public class BooksListener<T extends SherlockListFragment> implements ActionBar.TabListener{
private BooksFragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
public BooksListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Check if the fragment is already initialized
Bundle bundle = new Bundle();
bundle.putString("CategoryID", categoryID);
if (mFragment == null){
// If not, instantiate and add it to the activity
mFragment = (BooksFragment) Fragment.instantiate(
mActivity, mClass.getName());
mFragment.setArguments(bundle);
// mFragment..setProviderId(mTag); // id for event provider
ft.add(android.R.id.content, mFragment, mTag);
} else {
// If it exists, simply attach it in order to show it
mFragment.setArguments(bundle);
ft.attach(mFragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null){
// Detach the fragment, because another one is being attached
ft.detach(mFragment);
}
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// User selected the already selected tab. Usually do nothing.
}
}
//This is my fragment code below. I would to get the CategoryID here
public class BooksFragment extends SherlockListFragment{
TextView textview = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.books, container, false);
// do your view initialization heres
textview = (TextView)view.findViewById(R.id.textView1);
Bundle bundle =this.getArguments();
if(bundle != null){
String id = bundle.getString("CategoryID");
Log.i("CategoryID",id);
textview.setText(id);
}
return view;
}
}
J'essaie la solution mais je reçois un pointeur nul dans mon fragment – user2754532
J'ai effectué les changements dans mon code. J'ai ajouté l'ensemble que j'ai passé dans onTabSelected (Onglet Tab, FragmentTransaction ft). J'ai donc appelé le paquet pour récupérer. Mais j'ai le pointeur Null dans le fragment. – user2754532
êtes-vous sûr categoryID n'est pas nul? Cela fonctionne. 'categoryID = intent.getExtras() getString ("categoryID");'? – Dyna