2013-06-21 1 views
0

다른 뷰 아래에 배치 될 목록을 만들고 있습니다. 다른 기사를 기반으로, 나는 listview의 헤더에 다른보기를 포함해야합니다. ListFragment를 사용 중이며 여러 활동에 첨부됩니다. 그래서 ListFragment의 헤더를 설정하는 메소드를 만들고 있습니다.ListFragment getListView가 null입니다.

목록 표시 후 addHeader를 호출해도 getListView() 메서드가 null을 반환하는 것이 문제입니다.

왜 getListView()가 항상 null입니까? 여기

public class NewsListFragment extends ListFragment { 

private final int topNewsCount = 5; 

private DBNewsDataSource dataSource; 
private Activity myActivity; 
private Context myContext; 
private boolean isHome; 

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    isHome = true; 
    myActivity = getActivity(); 

    Bundle extras = myActivity.getIntent().getExtras(); 
    if (extras != null) { 
     isHome = extras.getBoolean("isHome"); 
    } 

    dataSource = new DBNewsDataSource(getActivity()); 
    dataSource.open(); 

    List<DBNews> news = dataSource.getAllNews(); 
    List<String> titleList = new ArrayList<String>(); 
    dataSource.close(); 

    for(int i = 0; i< (isHome?topNewsCount:news.size()); i++) 
    { 
     titleList.add(news.get(i).getTitle()); 
    } 

    NewsListArrayAdapter adapter = new NewsListArrayAdapter(getActivity(),news,titleList,isHome); 
    setListAdapter(adapter); 

    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
    // Do something with the data 

    } 

    public void addHeader(View v) 
    { 
     ListView lv = getListView(); 
     lv.addHeaderView(v); 
    } 

이 조각 당신은 조각을 사용하고 있지만, 이것은

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.example_fragment, container, false); 
    } 

호출되지 않은

public class HomeActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.template_activity_home); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    NewsListFragment frgNews = new NewsListFragment(); 
    MainSlideShowFragment frgSS = new MainSlideShowFragment(); 
      View vw = frgSS.getView(); 
    frgNews.addHeader(vw); 
    fragmentTransaction.add(R.id.layout_news_list , (Fragment) frgNews); 
    fragmentTransaction.commit(); 

    //frgNews.addHeader(vw); 
} 
+0

와 ListView에 포함되어 반환 할 수 있습니다. – Blackbelt

+0

나는 뉴스리스트를 포함시키고 자하는 활동에서 이것을 호출한다. – skaciw

답변

0

재정에서 onCreate보기를하고 뷰 느릅 나무는 addHeader 부릅니까 어디서 볼 수없는 ID android:id="@android:id/list"

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.cart_list, 
      null); 
    return view; 
} 
+0

나는 새로운 레이아웃 xml을 만들거나 template_activity_home의 레이아웃 안에 listview를 추가해야합니까? – skaciw

+0

새로운 것을 만드십시오 – Blackbelt

0

를 호출하는 활동이다 : 여기

내 코드입니다 레이아웃이 팽창됩니다. 따라서 아직 팽창되지 않았기 때문에 null입니다.

+0

R.layout.example_fragment는 무엇인가? 그 활동에 의해 사용되는 레이아웃입니까? – skaciw

+0

조각에 사용 된 레이아웃입니다. 조각의 레이아웃에 대한 참조로 대체하십시오. – samleighton87