gpt4 book ai didi

java - getActivity().runOnUiThread(new Runnable(){ 上的 NullPointerException

转载 作者:IT老高 更新时间:2023-10-28 20:47:29 24 4
gpt4 key购买 nike

我知道 NPE 有很多不同的原因,但我的有点奇怪(至少对我而言)。

所以我已经成功地将我的 Activity 转换为 Fragments,但我的问题似乎来自显示日期的函数。当应用程序运行时,一切正常。但是只要你按下后退按钮。应用程序强制关闭,然后在日志中显示我在第 102 行收到 NullPointerException。所以查看代码,我对此进行了研究,但不幸的是什么也没得到。

这是您按下后退按钮时错误所在的行。

getActivity().runOnUiThread(new Runnable(){

我还尝试禁用后退按钮(因为我正在构建启动器并且不需要它)。但它似乎不起作用。

这是整个日期显示方法/功能的代码。

// (Calendar) Date function - Displays dateview on Card
final boolean keepRunning1 = true;
Thread thread_two = new Thread(){
@Override
public void run(){

while(keepRunning1){

// Make the thread wait half a second. If you want...
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Toast.makeText(getActivity().getApplicationContext(), "Default Signature Fail", Toast.LENGTH_LONG).show();
e.printStackTrace();
}

getActivity().runOnUiThread(new Runnable(){
@Override
public void run(){
TextView date = (TextView) getView().findViewById(R.id.date);
date.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
}
});
}
}
};

thread_two.start();

感谢您抽出宝贵时间,希望您能阐明我做错了什么。

Logcat -

05-23 21:17:33.216: E/AndroidRuntime(6906): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.runOnUiThread(java.lang.Runnable)' on a null object reference
05-23 21:17:33.216: E/AndroidRuntime(6906): at com.activelauncher.fragments.UtilsFragment$2.run(UtilsFragment.java:102)

最佳答案

我几乎可以肯定这是由于线程完成其工作但 Activity 不再可见时引起的。

您应该检查 getActivity() 调用是否返回 null,并且...

要对您的代码应用更正,请查看以下内容:

// (Calendar) Date function - Displays dateview on Card
final boolean keepRunning1 = true;
Thread thread_two = new Thread(){

@Override
public void run(){

while(keepRunning1){

// Make the thread wait half a second. If you want...
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Toast.makeText(getActivity().getApplicationContext(), "Default Signature Fail", Toast.LENGTH_LONG).show();
e.printStackTrace();
}

// here you check the value of getActivity() and break up if needed
if(getActivity() == null)
return;

getActivity().runOnUiThread(new Runnable(){
@Override
public void run(){
TextView date = (TextView) getView().findViewById(R.id.date);
date.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
}
});
}
}
};thread_two.start();

关于java - getActivity().runOnUiThread(new Runnable(){ 上的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23825549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com