2011-07-22 257 views
0

我想在此基礎上的孩子在我ViewFlipper設置我的文字中TextSwitcher當前具有焦點和我不斷收到一個空指針。 這可能也可能不重要,但我有三個文本切換器在一個活動,每個與不同的視圖工廠。ViewSwitcher NullPointerException異常

public void onSwipe(int direction) 
    { 

     switch(direction) 
     { 

     case SimpleGestureFilter.SWIPE_LEFT : 
      UpdateTextSwitcher(); 
     if(flipper.getChildAt(flipper.getChildCount()-1).hasFocus()) 
     { flipper.stopFlipping(); 
     Log.i("ARRAY_OnCreate", "True focus 1"); 
     } 
      else { 
      flipper.setInAnimation(inFromRightAnimation()); 
      flipper.setOutAnimation(outToLeftAnimation()); 
      flipper.showNext();  
      } 
     break; 

     case SimpleGestureFilter.SWIPE_RIGHT : 
     if(flipper.getChildAt(0).hasFocus()) 
     { 
      flipper.stopFlipping(); 
     } 

      else{ 
      flipper.setInAnimation(inFromLeftAnimation()); 
      flipper.setOutAnimation(outToRightAnimation()); 
      flipper.showPrevious(); 
      } 
     break; 
     case SimpleGestureFilter.SWIPE_DOWN : 

     default: 

      break; 
     } 
} 

private void UpdateTextSwitcher() 
{ 
    if (flipper.getChildAt(0).hasFocus()) 
    { 
     lSwitcher.setText("R.string.s1"); 
     mSwitcher.setText("R.string.s2"); 
     rSwitcher.setText("R.string.s3"); 
    } 
    else 
    { 
     lSwitcher.removeAllViews(); 
     mSwitcher.setText("R.string.s2"); 
     rSwitcher.setText("R.string.s1"); 
    } 
} 

logcat的顯示

07-22 00:47:48.812: ERROR/AndroidRuntime(11141): FATAL EXCEPTION: main 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141): java.lang.NullPointerException 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at android.widget.TextSwitcher.setText(TextSwitcher.java:78) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at com.tmm.android.rssreader.RssActivity.UpdateTextSwitcher(RssActivity.java:134) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at com.tmm.android.rssreader.RssActivity.onSwipe(RssActivity.java:278) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at com.tmm.android.rssreader.SimpleGestureFilter.onFling(SimpleGestureFilter.java:119) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at android.view.GestureDetector.onTouchEvent(GestureDetector.java:568) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at com.tmm.android.rssreader.SimpleGestureFilter.onTouchEvent(SimpleGestureFilter.java:47) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at com.tmm.android.rssreader.RssActivity.dispatchTouchEvent(RssActivity.java:224) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1675) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2194) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1878) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at android.os.Looper.loop(Looper.java:130) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
    07-22 00:47:48.812: ERROR/AndroidRuntime(11141):  at  dalvik.system.NativeStart.main(Native Method) 

回答

0

爲什麼mSwitcher.setText("R.string.s2");?不應該只是從資源加載字符串mSwitcher.setText(getResources().getString(R.string.s2));因爲如果您設置R.string.s2不帶引號.setText()將不會接受(int),因爲需要CharSeq。

P.S:你不需要break;default語句,你在case SimpleGestureFilter.SWIPE_DOWN :

+0

嗯需要break。我不知道在引用資源時引用是必要的。我這樣做了好幾次。除此之外,我嘗試直接插入字符串,例如'mSwitcher.setText(「MyString」)',並且仍然沒有運氣 – ababzy

+0

mSwitcher.setText(「R.string.s2」)會在屏幕上顯示R.string。 s2,就是這樣,而不是資源內部的字符串。 –

+0

我明白你的意思了,這是我在發佈問題時犯的一個錯誤。但是,這不應該是我得到一個'空指針'的原因,是嗎? – ababzy