我在更改按钮的可见性方面遇到了问题.每当我使用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)
任何帮助将不胜感激.
这是因为
public View btnPause = null;
Run Code Online (Sandbox Code Playgroud)
你设置button为null.你需要分配它.假设你已经呼吁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的,除非你有其他事情发生
| 归档时间: |
|
| 查看次数: |
6279 次 |
| 最近记录: |