java - 屏幕关闭时 OnPause 返回 NullPointerException

标签 java android android-activity

我有一个TextView在我的 Activity 中正确初始化。 我可以在代码中使用它,没有任何问题。在 onPause()方法,我用myTextView.setText(""); 。如果我按主页按钮或启动一个新的Activity,它就可以正常工作。 ,但是当我使用电源按钮关闭屏幕电源时,我得到 NullPointerExceptionsetText() 抛出线。

我猜我的类(class)成员被onPause()之前的断电事件重置为空叫做。 处理此案的正确方法是什么?

我应该看广播吗SCREEN_OFF或者我的代码有问题吗?

我的代码很简单

@Override
protected void onPause(){
    myTextView.setText("");
    super.onPause();
}

Logcat 输出

03-04 19:58:44.783: E/AndroidRuntime(6717): FATAL EXCEPTION: main
03-04 19:58:44.783: E/AndroidRuntime(6717): Process: com.myapp, PID: 6717
03-04 19:58:44.783: E/AndroidRuntime(6717): java.lang.RuntimeException: Unable to pause activity {com.myapp/com.myapp.MyActivity}: java.lang.NullPointerException
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2307)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3758)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.ActivityThread.access$900(ActivityThread.java:145)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.os.Looper.loop(Looper.java:136)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.ActivityThread.main(ActivityThread.java:5081)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at java.lang.reflect.Method.invokeNative(Native Method)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at java.lang.reflect.Method.invoke(Method.java:515)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at dalvik.system.NativeStart.main(Native Method)
03-04 19:58:44.783: E/AndroidRuntime(6717): Caused by: java.lang.NullPointerException
03-04 19:58:44.783: E/AndroidRuntime(6717):     at com.myapp.MyActivity.onPause(MyActivity.java:35)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.Activity.performPause(Activity.java:5335)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1233)
03-04 19:58:44.783: E/AndroidRuntime(6717):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2285)
03-04 19:58:44.783: E/AndroidRuntime(6717):     ... 11 more

这是我初始化 TextView 的方法

private TextView myTextView;
@Override
public void onResume() {
    super.onResume();
    //new AsyncTask
    //onPostExecute(){
    myTextView = (TextView) findViewById(R.id.textView1);
    //}}.execute();
}

我知道它是在 AsyncTask 内初始化的,但我绝对可以在 Activity 期间使用它生命周期。我有一些Button如果单击更改其文本并且它们可以工作,也 onPause()作品。仅当屏幕关闭时才会发生这种情况...

更新: 由于某些奇怪的原因,当我按下电源按钮时,我的Activity执行onPause()正如所料,然后 onResume()onPause()片刻之后。什么会导致这种情况?

最佳答案

我怀疑这里的问题是您没有在方法中首先调用 super.onPause() 并收到 SuperNotCalledException

你想要这样的东西:

@Override
protected void onPause() {
    super.onPause();
    myTextView.setText("");
}

关于java - 屏幕关闭时 OnPause 返回 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180294/

相关文章:

java - 在列表中显示数据时出现问题

java - SQSListener 与 ThreadpoolExecutor

java - GWT 编译为 javascript 需要大量时间

java - 如何使用 SecureRandom 生成随机数

android - 使用 Picasso 从内部存储加载图像

android - google-service json 多个json或配置

java - 用于存储多架飞机的 GPS 位置列表的数据库结构

java - JSoup 解析 Webview 的 HTML

android - 查看android上google plus的 Activity 列表

android - 如果浏览器启动了我的 Activity,如何从 Activity 堆栈中删除浏览器?