그래서이 문제에 대한 여러 가지 해결책을 시도했습니다.문자열 리소스를 뷰 페이지 내의 문자열로 변환해야합니다.
다음class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
SimpleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
private String tabTitles[] = new String[] {"one","two","three","four"};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
내가이 (가) string.xml에서 같은 문자열을 얻기 위해 다음과 같은 노력 :
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
SimpleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
private String tabTitles[] = new String[] {Resources.getSystem().getString(R.string.one),
Resources.getSystem().getString(R.string.two),
Resources.getSystem().getString(R.string.three),
Resources.getSystem().getString(R.string.four)};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
을하지만이 오류받은 : 치명적인 예외를 여기에 내가 시작했던 곳의 예입니다 : main 프로세스 : com.example.android.myapp, PID : 9923 java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.example.android.myapp/com.example.android.myapp.MainActivity} : android.content .res.Resources $ NotFoundException : 문자열 res ource의 ID # 0x7f070017
내가 문자열이 존재하고 내가 그 문맥을해야 할 수도 있다고 생각 내 코드의 다른 영역에서 그들을 사용하는 것을 알고, 그래서 어댑터를 통해 MainActivity.this를 통과 시도 이후 :
치명적인 예외 :class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
private Context mContext;
SimpleFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.mContext = context;
}
private String tabTitles[] = new String[] {mContext.getResources().getString(R.string.one),
mContext.getResources().getString(R.string.two),
mContext.getResources().getString(R.string.three),
mContext.getResources().getString(R.string.four)};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
그리고 이 오류를받은 주요 프로세스 : com.example.android.myapp를, PID : 5387 java.lang.RuntimeException가 : 활동 ComponentInfo를 시작할 수 없습니다 {com.example.android.myapp /com.example.android.myapp.MainActivity} : java.lang.NullPointerException : 시도 t o null 객체 참조에서 'android.content.res.Resources android.content.Context.getResources()'라는 가상 객체를 호출합니다.
마지막으로, 리소스를 MainActivity 내에서 문자열로 변환하여 전달하려고했습니다. 어댑터 :
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
private String mOne;
private String mTwo;
private String mThree;
private String mFour;
SimpleFragmentPagerAdapter(FragmentManager fm, one, two, three, four) {
super(fm);
mOne = one;
mTwo = two;
mThree = three;
mFour = four;
}
private String tabTitles[] = new String[] {mOne,mTwo,mThree,mFour};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
오류없이 실행되었지만 단순히 빈 탭 제목이 표시되었습니다.
어쩌면 나는 완벽한 멍청한 녀석 일 뿐이며 어쩌면 단순한 무언가를 잃어 버렸을지도 모르지만 당신이 제공 할 수있는 도움에 감사드립니다. 코드 줄에서
어댑터를 인스턴스화하고 탭 레이아웃으로 설정할 위치를 표시 할 수 있습니까? – buradd
내 대답이 도움이 되었습니까? 그렇다면 수용된 대답으로 표시하십시오. – MatusMak