2014-07-07 6 views
0

IF 문 내에서 getTopics를 사용하여 텍스트 파일에서 가져온 데이터를 사용하고 있습니다. 데이터가있는 경우 조각에 작업 표시 줄에 해당 탭이 있음을 의미합니다. 그러나 이것을 추가하면 null 포인터 예외가 발생합니다. 이것은 추가 될 세 번째 조각에서 발생합니다. 나누기Android 용 Java에서 FragmentStatePagerAdapter를 사용할 때 Null 포인터 예외가 발생합니다.

최신 코드 :

class MyAdapter extends FragmentStatePagerAdapter 
{ 

public MyAdapter(FragmentManager fm) { 
    super(fm); 
} 
@Override 
public Fragment getItem(int i) { 
    Fragment fragment=null; 

    if(i==0) //This fragment always has a corresponding action bar tab. 
    { 
     fragment=new FragmentA(); 
    } 

    addTabPosition = 2; //Variable used in getTopics(). 
    addTabTitle = ""; 
    GetTopics(); 
    if(i==1 && !(addTabTitle == "")) 
    { 
     fragment=new FragmentB(); 
    } 
    addTabPosition = 3; 
    addTabTitle = ""; 
    GetTopics(); 
    if(i==2 && !(addTabTitle == "")) //This is where the program breaks. 
    { 
     fragment=new FragmentC(); 
    } 


    return fragment; 
} 

오래된 코드를 아프게하지 않습니다 내가 원시 INT이며 null이 될 수 없다으로

class MyAdapter extends FragmentStatePagerAdapter 
{ 

public MyAdapter(FragmentManager fm) { 
    super(fm); 
} 
@Override 
public Fragment getItem(int i) { 
    Fragment fragment=null; 

    if(i==0) 
    { 
     fragment=new FragmentA(); 
    } 

    if(i==1) 
    { 
     fragment=new FragmentB(); 
    } 

    if(i==2) 
    { 
     fragment=new FragmentC(); 
    } 
    return fragment; 
} 
+0

당신은 또한 충돌 –

+0

에서 오류 로그를 게시해야을, 각 두 번) (GetTopics를 실행하는 의도였다 인수가 무엇인지에 관계없이 getItem() 호출? 이 코드에 대한 귀하의 의도는 무엇인지 모르겠지만 문장의 바깥에 'if'문을 사용해야한다는 것을 의미합니다. – WalkingFood

+0

if-condition에서 nullsave 방법을 사용해야한다고 생각합니다. "".equals (addTabTitle) –

답변

0

, 문제가해야합니다 addTabTitle :

addTabTitle은 예외를 설명하는 null이어야합니다. 다음과 같이 null 체크를 수행해야합니다.

if(i==2 && !(addTabTitle != null && addTabTitle == "")) 

P.S. 당신은 또한 당신이 DRY 원칙을 위반하고 같은 조금 코드를 리팩토링 할 수

Don't repeat yourself

관련 문제