Android由setVisibility()方法查看nullPointerException

use*_*397 1 java android

我在更改按钮的可见性方面遇到了问题.每当我使用setVisibility()方法时,我都会得到一个nullPointerException.这是我得到的错误:

04-08 15:59:02.529: E/AndroidRuntime(2807): FATAL EXCEPTION: main
04-08 15:59:02.529: E/AndroidRuntime(2807): java.lang.NullPointerException
04-08 15:59:02.529: E/AndroidRuntime(2807):     at com.android.Rides.RideTracking.onClick(RideTracking.java:307)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at android.view.View.performClick(View.java:4204)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at android.view.View$PerformClick.run(View.java:17355)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at android.os.Handler.handleCallback(Handler.java:725)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at android.os.Looper.loop(Looper.java:137)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at android.app.ActivityThread.main(ActivityThread.java:5041)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at java.lang.reflect.Method.invokeNative(Native Method)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at java.lang.reflect.Method.invoke(Method.java:511)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-08 15:59:02.529: E/AndroidRuntime(2807):     at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

这是代码:

        public View btnStart = null;
        public View btnPause = null;
        public View btnResume = null;

        case R.id.btnPauseRide:
            mLoggerServiceManager.pauseGPSLogging();

            setResult( RESULT_OK, intent );
            btnPause.setVisibility(View.GONE);
            btnResume.setVisibility(View.VISIBLE);
            break;

        case R.id.btnResumeRide: 
            mLoggerServiceManager.resumeGPSLogging();
            setResult(RESULT_OK, intent);

            btnResume.setVisibility(View.GONE);
            btnPause.setVisibility(View.VISIBLE);
        default:
                            break;
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

cod*_*gic 5

这是因为

 public View btnPause = null;
Run Code Online (Sandbox Code Playgroud)

你设置buttonnull.你需要分配它.假设你已经呼吁setContentView()button是在layout

btnPause = (Button) findViewwById(R.id.button_id);
Run Code Online (Sandbox Code Playgroud)

你有你所有的buttons设置null然后试图调用它们的方法setVisibility(),它将null每次返回

如果您想要隐藏Button按下的那个,那么您可以这样做

    case R.id.btnPauseRide:
        mLoggerServiceManager.pauseGPSLogging();

        setResult( RESULT_OK, intent );
        btnPPauseRide.setVisibility(View.GONE);
        btnResume.setVisibility(View.VISIBLE);
        break;
Run Code Online (Sandbox Code Playgroud)

而不是创建这些新View的,除非你有其他事情发生