2012-06-20 4 views
2

현재 어떤 탭이 표시되는지에 따라 ActionBarSherlock을 사용하여 다른 목록 조각을 표시하려고합니다. 지금까지는 심지어 내 조각을 표시하려고 과거를 얻을 수 없습니다. 인스턴스화되고 생성되었지만보기에는 표시되지 않습니다. 여기 ActionBarSherlock을 사용하여 내 조각을 볼 수 없습니다.

내가 그 SherlockFragmentActivity 구현이 그 활동의 :

public class MyListView extends SherlockFragmentActivity implements ActionBar.TabListener{ 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     setTheme(com.actionbarsherlock.R.style.Theme_Sherlock); //Used for theme switching in samples 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.tab_navigation); 

     MyListFrag listFrag = (MyListFrag) getSupportFragmentManager() 
       .findFragmentById(R.id.fragment1);   
     listFrag.update(ViewActivity.livePoints); 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

     fragmentTransaction.add(R.id.fragment1, listFrag); 
     fragmentTransaction.commit(); 

     getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     for (int i = 1; i <= 3; i++) { 
      ActionBar.Tab tab = getSupportActionBar().newTab(); 
      tab.setText("Tab " + i); 

      tab.setTabListener(this); 
      getSupportActionBar().addTab(tab); 
     } 



    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction transaction) { 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction transaction) { 

    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction transaction) { 
    } 

} 

당신은 내가 fragmentmanager를 사용하여 활동에 조각을 추가하려고했지만 나는 또한 XML을 추가하기 위해 노력하고있어 볼 수 있습니다 그것은 현재 나에게도 효과가 없다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:padding="20dip"> 


<fragment 
    android:name="core.MyListFrag" 
    android:id="@+id/fragment1" 
    android:layout_weight="1" 
    android:layout_width="0px" 
    android:layout_height="match_parent" 
    /> 

</LinearLayout> 

마지막으로 여기에 사용중인 listfragment 클래스가 있습니다. 내가 뭘 하려는지 내가 baseadapter를 확장하여 만드는 사용자 지정 어댑터로 목록을 채우는 것입니다하지만 난 그게 문제의 일부가 될 수있는 올바르게하고 있는지 잘 모르겠습니다.

public class MyListFrag extends SherlockListFragment{ 

MarkItemAdapter mia; 

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

    mia = new MarkItemAdapter(this.getActivity(), MyViewActivity.livePoints); 
    setListAdapter(mia); 
    Toast.makeText(getSherlockActivity(), "frag started"+MyViewActivity.livePoints.size(), Toast.LENGTH_LONG).show(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    return inflater.inflate(R.layout.list_frag_layout, container, false); 


} 

public void updateUrl(List<Points> newList) { 
    if(mia!=null){ 
     mia.points.clear(); 
     mia.points = newList; 
     mia.notifyDataSetChanged(); 
    }else{ 
     mia.points = newList; 
     mia.notifyDataSetChanged(); 
    } 
} 

class MarkItemAdapter extends BaseAdapter{ 
    List<Points> points = null; 
    Context cntx = null; 
    LayoutInflater myInflater; 
    int itemPosition =0; 
    ViewHolder holder; 

    public MarkItemAdapter(Context cntx,List<Points> points){ 

     this.points = points; 
     this.cntx = cntx; 

    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return marks.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     itemPosition = position; 

     if (convertView==null) { 
      convertView = myInflater.inflate(R.layout.point_row_item, null); 
      holder = new ViewHolder(); 
      holder.description = (TextView) convertView.findViewById(R.id.point_description); 
      holder.distance = (TextView) convertView.findViewById(R.id.point_distance); 
      holder.point_image = (ImageView) convertView.findViewById(R.id.point_image); 
      holder.view_point = (ImageButton) convertView.findViewById(R.id.view_mark); 
      holder.rate_point = (RatingBar) convertView.findViewById(R.id.rate_point); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.description.setText(points.get(itemPosition).title); 
     holder.distance.setText(points.get(itemPosition).getDistanceString()); 
     holder.view_point.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 
       //do stuff 
      } 

     }); 

    //add logic for rating bar 

     return convertView; 
    } 


} 

private class MyViewHolder{ 
    ImageView mark_image; 
    TextView description; 
    TextView distance; 
    ImageButton view_mark; 
    RatingBar rate_mark; 
} 

} 

그 날을 도울 사람을 도움이된다면 나는 다른 XML 레이아웃을 추가 할 수 있습니다하지만 난 그게 문제가 아니라 레이아웃의 내 자바의 확신으로 나는 그들을 떠났다. 단편은 처음 사용할 때 명확하지 않습니다. 나는 onAttach()을 사용했는지 안했는지 안다면, 안드로이드 문서를보고 다른 모든 튜토리얼을 보는 것은 나 혼란 스럽다. 프랜 켄슈 타인 (Frankenstein)의 단편을 만들기 위해 코드가 엉망으로 열 개의 튜토리얼을 함께 쓰고 싶지 않기 때문에 조각이있는 곳에서 놀아 보았습니다.

답변

0

난 당신이 게시 된 XML 파일이 R.layout.tab_navigation 가정 보인다

확인 당신이 "클래스를 찾을 수 없습니다 ..."또는 "오류 팽창 레이아웃과 같은 오류가없는 경우 .. . "그것은 괜찮

용기, 어린이 화면을 회전 또는 태블릿에서 사용시 추가/을 대체 할 수있다 (단편) 갖는 활동 (SherlockFragmentActivity)되어 조각을 사용하는 아이디어 유연한 인터페이스를 주문하십시오.

이 방법은 또한 마스터/세부 흐름을 가질 수 있습니다

같은 albumList-> imageList-> 슬라이드 쇼

그래서 당신은 컨테이너의 역할을하고 게시 된 XML을 팽창하여 MyListView이 R.layout.tab_navigation. 그리고 발리 조각 자체를 대체 할 수준의 MyListFrag이 조각을 사용하는 경우 R.layout.list_frag_layout 이제

당신이

한 질문을 추가 대신 을 대체 사용을 고려해야 팽창, 무엇을 당신은 조각을 (이 경우) 사용하고 싶습니까?

관련 문제