5

Tôi đang sử dụng một đoạn lồng nhau bằng cách sử dụng SherlockFragment, tất cả đều hoạt động tốt. Nhưng tôi không thể làm cho tiêu đề viewpager thành chuỗi để tôi có thể hỗ trợ đa ngôn ngữ sử dụng string.xml.Truy cập vào getString() trong một đoạn mà thực hiện một viewpager

Đây là mã của tôi

public class schedule_pl extends SherlockFragment { 


private static String titles[] = new String[] { "Portugal", "Lisbon" , "Azores" }; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.main_pager, container, false); 
    // Locate the ViewPager in viewpager_main.xml 
    ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager); 
    // Set the ViewPagerAdapter into ViewPager 
    mViewPager.setAdapter(new MyAdapter (getChildFragmentManager())); 
    return view; 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    try { 
     Field childFragmentManager = Fragment.class 
       .getDeclaredField("mChildFragmentManager"); 
     childFragmentManager.setAccessible(true); 
     childFragmentManager.set(this, null); 
    } catch (NoSuchFieldException e) { 
     throw new RuntimeException(e); 
    } catch (IllegalAccessException e) { 
     throw new RuntimeException(e); 
    } 
} 


public static class MyAdapter extends FragmentPagerAdapter { 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 
    } 


    @Override 
    public Fragment getItem(int position) { 
     switch(position) 
     { 
       case 0: 
        return new place(); 
       case 1: 
        return new place2();    
       case 2: 
        return new place3(); 

    } 
     return null; 
     } 




    @Override 
    public CharSequence getPageTitle(int position) { 
     return titles[position]; 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 
    } 


public static class place extends Fragment { 

    public place() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment1, container, 
       false); 
     return rootView; 
    } 
} 
public static class place3 extends Fragment { 

    public place3() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment2, container, 
       false); 
     return rootView; 
    } 
} 
public static class place2 extends Fragment { 

    public place2() { 
    } 

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

}

trên getPageTitle tôi có thể không phải là làm việc với các chuỗi và đã thử một số phương pháp.

Access to getString() in android.support.v4.app.FragmentPagerAdapter? Đây là câu hỏi tương tự trên trang web nhưng không có câu trả lời nào cho tôi đi đúng hướng.

tôi đã cố gắng sử dụng này:

@Override 
    public CharSequence getPageTitle(int position) { 
     Locale l = Locale.getDefault(); 
     switch (position) { 
     case 0: 
      return getcontext.getString(R.string.title_section_schedule1).toUpperCase(l); 
     case 1: 
      return getcontext.getString(R.string.title_section_schedule2).toUpperCase(l); 
     case 2: 
      return getcontext.getString(R.string.title_section_schedule3).toUpperCase(l); 
     } 
     return null; 
    } 

Nhưng đừng làm việc. Có ai biết giải pháp này không?

Trả lời

3

Bạn có thể vượt qua Activity cho trình tạo bộ điều hợp của mình.

mViewPager.setAdapter(new MyAdapter (getChildFragmentManager(), getActivity())); 

sau đó trong MyAdapter:

//declare a private variable for the activity 
private Activity myActivity; 
public MyAdapter(FragmentManager fm, Activity myActivity) { 
    super(fm); 
    this.myActivity = myActivity; 
} 

sau đó trong bạn getPageTitle

... 
return myActivity.getString(R.String.title_section_scheduale1).toUpperCase(l); 
... 

Hãy thử nó ra hy vọng nó làm việc cho bạn.

+0

Làm việc cho tôi! Cảm ơn;) – Silvuz

+0

vui vì tôi đã có thể giúp :) – Coderji

Các vấn đề liên quan