3

내 첫 번째 조각 기반의 앱을 작성 중이며 API 또는 Stackoverflow로 해결할 수없는 중대한 문제가 발생합니다.ViewPager 내부의 ListFragments

두 개의 목록을 비교하려면 viewPager을 사용하고 있습니다. 각 목록에는 헤더 버튼이있어 새로운 목록 요소를 만들 수 있습니다 (기본 Android 앱과 유사). 버튼은 현재 디버깅을위한 오류 메시지를 반환합니다.

문제는 :

  • FragmentList A가

    ... // The main class 
    public class DemoApp extends FragmentActivity implements ActionBar.TabListener { 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    
    setContentView(R.layout.main); 
    
    // Set up the action bar. 
    final ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    
    PageAdapter mPageAdapter = new PageAdapter(getSupportFragmentManager()); 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mPageAdapter); 
    
    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
        @Override 
        public void onPageSelected(int position) { 
         actionBar.setSelectedNavigationItem(position); 
        } 
    }); 
    
    for (int i = 0; i < mPageAdapter.getCount(); i++) { 
        actionBar.addTab(actionBar.newTab().setText(mPageAdapter.getPageTitle(i)).setTabListener(this)); 
    } 
    } 
    ... 
    

내 사용자 정의 PageAdapter가 만들 디버그 메시지를 FragmentList B

  • FragmentList B에 대한 디버그 메시지를 반환 반환 두 개의 프래그먼트 객체 목록 :

    냈다
    public class PageAdapter extends FragmentStatePagerAdapter { 
    
    private final int NUMBER_PAGES = 2; 
    
    public PageAdapter(FragmentManager fm) { 
        super(fm); 
    } 
    
    @Override 
    public Fragment getItem(int position) { 
        if (position == 0) { 
         return new FoodListFragment(); 
        } else if (position == 1){ 
         return new LocationListFragment(); 
        } else { 
         throw new IllegalArgumentException("Invalid page position: " + position); 
        } 
    } 
    
    
    @Override 
    public int getCount() { 
        return NUMBER_PAGES; 
    } 
    
    ... 
    
    } 
    

    FoodListFragment는 (다른 목록은 디버그 출력을 제외하고 비슷) :

    public class FoodListFragment extends ListFragment implements LoaderCallbacks<Cursor> { 
    /* 
    * (non-Javadoc) 
    * 
    * @see android.support.v4.app.Fragment#onActivityCreated(android.os.Bundle) 
    */ 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
        super.onActivityCreated(savedInstanceState); 
    
        // add a list header with the button to create a new list item 
        View v = getActivity().getLayoutInflater().inflate(R.layout.list_header, null); 
        getListView().addHeaderView(v); 
    
    ... 
        setListAdapter(getSomeAdapter()); 
    
        // get the list header button 
        ImageButton createItem = (ImageButton) getActivity().findViewById(R.id.create_new_entry); 
    
        createItem.setOnClickListener(new View.OnClickListener() { 
    
         @Override 
         public void onClick(View v) { 
          Log.e(LOG_TAG, "onclick FoodListFragment"); 
         } 
        }); 
    
    } 
    

    main.xml에 : 나는 버그를 발견했습니다

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/wrapper" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    
    <android.support.v4.view.ViewPager 
        xmlns:tools="http://schemas.android.com/tools" 
        android:id="@+id/pager" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        tools:context=".DemoApp" /> 
    
    </LinearLayout> 
    
  • 답변

    0

    . 각 목록에서 나는 동일한 머리글보기와 동일한 머리글 단추를 호출하고있었습니다. onClick 메서드를 명확하게 할당 할 수 없습니다.