【发布时间】:2022-01-09 17:39:49
【问题描述】:
我正在尝试在片段中设置文本颜色。当我退出片段时它会慢慢崩溃。 我附上了我的代码以供参考....
class TickData implements Runnable {
@Override
public void run() {
if (!token.isEmpty()){
//TODO: Nifty Auto live data
OkHttpClient client = new OkHttpClient().newBuilder().build();
okhttp3.Request request = new okhttp3.Request.Builder()
.url("https://history.truedata.in/getticks?symbol=NIFTY AUTO&from=" + getToday() + "T09:15:00&to=" + getToday() + "T15:30:00&response=json&bidask=1")
.method("GET", null)
.addHeader("Authorization", "Bearer " + token)
.build();
try {
okhttp3.Response response = client.newCall(request).execute();
String s = response.body().string();
ObjectMapper mapper = new ObjectMapper();
try {
Map map = mapper.readValue(s, Map.class);
List<List> recordsList = (List<List>) map.get("Records");
Collections.reverse(recordsList);
//Log.e(TAG, "TickData: " + recordsList.get(0).get(1));
String bn = String.valueOf(recordsList.get(0).get(1));
float val = Float.parseFloat(bn) - NiftyAutoPervClose();
float res = val / NiftyAutoPervClose();
float persent = res * 100;
handler.post(new Runnable() {
@Override
public void run() {
niftyAuto.setText(bn);
niftyAutoCalc.setText(df.format(val));
niftyAutoPers.setText("( " + df.format(persent) + "% )");
if (val > 0) {
niftyAutoPers.setBackgroundResource(R.drawable.gain_indices);
niftyAutoCalc.setTextColor(getResources().getColor(R.color.green));
} else {
niftyAutoPers.setBackgroundResource(R.drawable.loss_indices);
niftyAutoCalc.setTextColor(getResources().getColor(R.color.red));
}
}
});
refresh(1000);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
socketData();
new Thread(tickData).start();
}
}
}
这是我慢慢退出片段时出现的错误......
2021-12-03 15:37:20.789 5555-5555/com.pro.tra E/AndroidRuntime: 致命异常: main 进程:com.pro.tra,PID:5555 java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法 'android.content.res.Resources androidx.fragment.app.FragmentActivity.getResources()' 在 com.pro.tra.Indices.tab.IndianIndices.IndianIndicesFragment$TickData$1.run(IndianIndicesFragment.java:179) 在 android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:236) 在 android.app.ActivityThread.main(ActivityThread.java:7861) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:600) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
【问题讨论】:
-
显示你如何声明
handler变量
标签: java android android-fragments android-lifecycle