2013-09-26 3 views
0

Je ne peux pas appeler classe outsider de Fragment, ne pas pourquoi. Et montre moi ces messages.appeler une classe de fragment dans android

Impossible de faire une référence statique à la méthode non statique selectItem (String, String, String) à partir du type MainActivity

voici mon code. Je veux appeler la classe "selectItem" de ContentFragment. C'est un problème que je ne peux pas appeler cette classe.

private void selectItem(String title, String gender, String getStats) {  
    Fragment fragment = new ContentFragment(); 
    Bundle args = new Bundle(); 
    args.putString(ContentFragment.JOBTITLE, title); 
    args.putString(ContentFragment.JOBGENDER, gender); 
    args.putString(ContentFragment.JOBSTATUS, getStats); 
    fragment.setArguments(args);   

    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

} 

public static class ContentFragment extends Fragment { 

    public ContentFragment() { 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.list_layout, container, false); 
     btnPopMsg = (TextView) rootView.findViewById(R.id.btnPopMsg); 
     btnPopMsg.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       >>>selectItem("", "", "ALL");<<< 
      } 
     });    
     return rootView; 
    } 
} 
+3

'((YourActivityNameHere) getActivity()) selectItem ("", "", "ALL");' – Luksprog

Répondre

0

Vous ne pouvez pas appeler static method dans une méthode non statique. Si vous voulez appeler la fonction dans votre onClick, ajoutez le bloc de code:

if(getActivity() instanceof MainActivity){ 
     ((MainActivity)getActivity()).selectItem("", "", "ALL"); 
} 
+1

Erreur de syntaxe. sur le jeton "instanceOf", instanceof attendu – ppshein

+0

Oui, Mon erreur de type! –

1

Vous devez soit définir une référence à tout-emballage-classe est par exemple après la création d'une instance ContentFragment, puis appeler la méthode de la référence. Ou vous pouvez supprimer le modificateur static de la définition ContentFragment s'il correspond à votre conception. Cela se produit car une instance de classe statique imbriquée peut exister sans un objet wrtapper de classe wrapper, donc dans la classe imbriquée il n'y a pas de référence à la classe wrapper et elle peut appeler des méthodes de classe wrapper.

Questions connexes