开发者

ViewSwitcher NullPointerException

I am trying to set my Text in TextSwitcher based on which child in my ViewFlipper currently has focus and I keep getting a null pointer. This may or may not important, but I have three text switchers in one activity each with a different view factory.

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 shows

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/Android开发者_开发技巧Runtime(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)


Why mSwitcher.setText("R.string.s2");? Shouldn't be just loading the string from resourcesmSwitcher.setText(getResources().getString(R.string.s2)); Because if you set R.string.s2 without quotes .setText() will not accept (int), since requires CharSeq.

P.S: You don't need break; in default statement, and you need break in case SimpleGestureFilter.SWIPE_DOWN :

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜