2013-09-07 4 views
-1

인 텐트를 사용하여 다른 활동을 통해이 활동을 열려고하면 응용 프로그램이 닫힙니다. 사실 나는 질문을 보여주는 app과 같은 n 개의 퀴즈를 만들려고 노력하고 있습니다. XML :새 활동 시작시 NullPointerException이 발생했습니다.

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

<TextSwitcher 
    android:id="@+id/textSwitcher1" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="3.0"> 
</TextSwitcher> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="bottom" 
    android:padding="4dp" 
    > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="24dp" 
     android:text="Button" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginRight="42dp" 
     android:text="Button" /> 
</RelativeLayout> 

활동 :

public class CQAct extends Activity implements ViewSwitcher.ViewFactory { 
TextSwitcher tsw; 
Button next,prev; 
int m_iCurrIndex=0; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cq); 
    tsw=(TextSwitcher) findViewById(R.id.textSwitcher1); 
    tsw.setFactory(this); 
    next=(Button) findViewById(R.id.button2); 
    prev=(Button) findViewById(R.id.button1); 

    Animation in = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left); 
    Animation out = AnimationUtils.loadAnimation(this,android.R.anim.slide_out_right); 

    tsw.setInAnimation(in); 
    tsw.setOutAnimation(out); 
    next.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     m_iCurrIndex++; 
     updateCounter(); 
     } 
    }); 

    prev.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      m_iCurrIndex--; 
      updateCounter(); 
     } 
    }); 
    updateCounter(); 
} 
    void updateCounter() { 
    String str= getData(); 
    tsw.setText(str); 
} 

String getData() 
    { 
    return new StringBuilder(String.valueOf(new StringBuilder(String.valueOf(new StringBuilder(String.valueOf(new StringBuilder(String.valueOf(new StringBuilder(String.valueOf("\n")).append("Question ").append(1 + this.m_iCurrIndex).append(":\n").toString())).append(QAs.strQs[this.m_iCurrIndex]).toString())).append("\n\n").toString())).append("Answer:\n").toString())).append(QAs.strAs[this.m_iCurrIndex]).toString() + "\n\n"; 
    } 

public View makeView() { 
    TextView myText = new TextView(this); 
    myText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
    myText.setTextSize(15); 
    myText.setTextColor(Color.BLUE); 
    return myText; 
} 
} 

내 정적 클래스 :

Error : 
09-07 17:52:29.226: W/dalvikvm(23855): threadid=1: thread exiting with uncaught exception (group=0x40ce0450) 
09-07 17:52:29.226: E/AndroidRuntime(23855): FATAL EXCEPTION: main 
09-07 17:52:29.226: E/AndroidRuntime(23855): java.lang.NullPointerException 
09-07 17:52:29.226: E/AndroidRuntime(23855): at com.ankur.interviewquestions.CQAct.getData(CQAct.java:50) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at com.ankur.interviewquestions.CQAct.updateCounter(CQAct.java:44) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at com.ankur.interviewquestions.CQAct.onClick(CQAct.java:65) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at android.view.View.performClick(View.java:4129) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at android.view.View$PerformClick.run(View.java:17143) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at android.os.Handler.handleCallback(Handler.java:615) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at android.os.Looper.loop(Looper.java:137) 
09-07 17:52:29.226: E/AndroidRuntime(23855): at android.app.ActivityThread.main(ActivityThread.java:4802) 
: 여기
public class QAs { 

    public static final int MAX_QAS = 3; 
    public static String[] strAs; 
    public static String[] strQs; 

    QAs() { 

    strQs = new String[3]; 
    strAs = new String[3]; 
    strQs[0] = "What is a your name?"; 
    strAs[0] = "xyz"; 
    strQs[1] = "abcd?"; 
    strAs[1] = "keyword"; 
    strQs[2] = "abcd?"; 
    strAs[2] = "aabbccdd"; 
    } 
} 

오류입니다
+2

오류 게시 –

+0

널 포인터 예외가 종종 초보자에게 발생합니다. –

답변

0

는 로그 캣 출력에 따르면, 당신은이 코드 (터무니없이 복잡) 라인에 NullPointerException이을 받고 :

String getData() { 
    return new StringBuilder(String.valueOf(new StringBuilder(String.valueOf(new StringBuilder(String.valueOf(new StringBuilder(String.valueOf(new StringBuilder(String.valueOf("\n")).append("Question ").append(1 + this.m_iCurrIndex).append(":\n").toString())).append(QAs.strQs[this.m_iCurrIndex]).toString())).append("\n\n").toString())).append("Answer:\n").toString())).append(QAs.strAs[this.m_iCurrIndex]).toString() + "\n\n"; 
} 

이것은 이유 왜 앱이 충돌이 활동을 시작. 충돌은 TextSwitcher와 관련이 없습니다.

변수가 null인지 확인하십시오. 예를 들어 :

QAs.strQs[this.m_iCurrIndex] 

에서 온 않습니다

?

UPDATE :

귀하의 문제가 있으므로 당신의 배열이 null이며, 정적 클래스의 생성자가를 호출되지 않습니다 것입니다. 난 당신이 배열을 초기화하는 초기화 방법을 사용하는 것이 추천 :합니다 (에서 onCreate()에서 예를 들어) 당신의 활동에있는 GetData()를 호출하기 전에, 다음

public static void initialize() { 
    strQs = new String[3]; 
    strAs = new String[3]; 
    strQs[0] = "What is a your name?"; 
    strAs[0] = "xyz"; 
    strQs[1] = "abcd?"; 
    strAs[1] = "keyword"; 
    strQs[2] = "abcd?"; 
    strAs[2] = "aabbccdd"; 
} 

과, 전화 :

QAs.initialize(); 
+0

QAs는 두 개의 정적 Array strQ와 strAs를 통합하는 클래스입니다. –

+0

코드 게시하시기 바랍니다. –

+0

public class QAs { \t public static final int MAX_QAS = 3; \t public static String[] strAs; \t public static String[] strQs; \t QAs() \t { \t strQs = new String[3]; \t strAs = new String[3]; \t strQs[0] = "What is a your name?"; \t strAs[0] = "xyz"; \t strQs[1] = "abcd?"; \t strAs[1] = "keyword"; \t strQs[2] = "abcd?"; \t strAs[2] = "aabbccdd"; \t } }

관련 문제