2016-01-31 33 views
0

我想弄清楚如何在片段內(這是一個tablayout和viewpager內)插入一個列表視圖。當我不評論lstOpciones.setAdapter(adaptador)時,該應用程序正在崩潰;在片段內插入一個ListView

當前的代碼是這樣一個:

主要活動

public class MainActivity extends AppCompatActivity { 

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

    Toolbar toolbar = (Toolbar) findViewById(R.id.appbar); 
    //Use NoActionBar theme in styles 
    setSupportActionBar(toolbar); 

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setAdapter(new MainFragmentPageAdapter(
      getSupportFragmentManager())); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.appbartabs); 
    tabLayout.setTabMode(TabLayout.MODE_FIXED); 
    tabLayout.setupWithViewPager(viewPager); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

}

MainFragmentPageAdapter類:

public class MainFragmentPageAdapter extends FragmentPagerAdapter { 
private final int NUMERO_PAGINAS = 3; 
private final String tabTitles[] = new String[] {"Llamadas", "Chats", "Contactos"}; 
public MainFragmentPageAdapter(FragmentManager fm) 
{ 
    super(fm); 
} 

@Override 
public Fragment getItem(int position) { 
    Fragment f = null; 
    switch(position) 
    { 
     case 0: 
      f = FragmentLlamadas.newInstance(); 
      break; 
     case 1: 
      f = FragmentChats.newInstance(); 
      break; 
     case 2: 
      f = FragmentContactos.newInstance(); 
      break; 
    } 
    return f; 
} 

@Override 
public int getCount() { 
    return NUMERO_PAGINAS; 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    // Generate title based on item position 
    return tabTitles[position]; 
} 

}

弗拉gment聊天類:

public class FragmentChats extends Fragment { 
public FragmentChats() { 
    //Tiene que estar vacío 
} 
public static FragmentChats newInstance() { 
    return new FragmentChats(); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    final String[] datos = 
      new String[]{"Elem1","Elem2","Elem3","Elem4","Elem5"}; 

    ArrayAdapter<String> adaptador = 
      new ArrayAdapter<String>(getActivity().getApplicationContext(), 
        android.R.layout.simple_list_item_1, datos); 

    ListView lstOpciones = (ListView)getActivity().findViewById(R.id.chatlist); 
    lstOpciones.setAdapter(adaptador); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_chats, container, false); 
} 

}

非常感謝您

+1

崩潰!請發佈您的logcat錯誤跟蹤。 – Rohit5k2

+2

「該應用程序崩潰的所有時間」 - 然後添加logcat [你的問題](http://stackoverflow.com/posts/35119885/edit) –

+0

並且還添加'fragment_chats.xml'文件 –

回答

0

改變你的方法是這樣的。您在錯誤的地方引用了listView。我假設ListViewchatlist是在佈局fragment_chats

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_chats, container, false); 
    final String[] datos = 
     new String[]{"Elem1","Elem2","Elem3","Elem4","Elem5"}; 

    ArrayAdapter<String> adaptador = 
     new ArrayAdapter<String>(getActivity().getApplicationContext(), 
       android.R.layout.simple_list_item_1, datos); 

    ListView lstOpciones = (ListView)view.findViewById(R.id.chatlist); 
    lstOpciones.setAdapter(adaptador); 

    return view; 
}