2014-06-09 1 views
0

J'ai donc le code suivant.Impossible d'accéder à la balise id dans fragment_main

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Create the adapter that will return a fragment for each of the three 
    // primary sections of the activity. 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager()); 

    savedSearches = getSharedPreferences(SEARCHES, MODE_PRIVATE); 

     // store the saved tags in an ArrayList then sort them 
     tags = new ArrayList<String>(savedSearches.getAll().keySet()); 
     Collections.sort(tags, String.CASE_INSENSITIVE_ORDER); 

     // create ArrayAdapter and use it to bind tags to the ListView 
     adapter = new ArrayAdapter<String>(this, R.layout.list_item, tags); 

     System.out.println(R.id.list); 
     ListView lv = (ListView) findViewById(R.id.list); 
     lv.setAdapter(adapter); 

    // Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

} 

Le problème est que lv est nul après l'avoir instancié. Je sais que R.id.list existe, car il retourne un int comme prévu. Je crois que le problème est que R.id.list est dans R.layout.fragment_main au lieu de R.layout.activity_main (puisque setContentView le définit à R.layout.activity_main). Cependant, j'ai besoin d'utiliser activity_main pour setContentView. Des idées pour résoudre le problème? La plupart des endroits en ligne ont juste dit que c'était le problème, mais n'a pas donné une réponse.

Merci.

Répondre

0

Oui, il est nul, car vous accédez à une vue d'une autre mise en page que votre activité n'a pas utilisée.

solution :

1: Vous pouvez transférer votre ListView de fragment_main dans votre activity_main

ou

2: Vous pouvez commencer un fragment et de définir votre fragment_main comme mise en page du fragment et de là, vous pouvez ensuite instancier votre ListView.

Questions connexes