在片段中设置文本颜色

Posted

技术标签:

【中文标题】在片段中设置文本颜色【英文标题】:Set text color in fragment 【发布时间】: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变量 【参考方案1】:

它崩溃是因为片段未附加到 handler.post 中的活动

你可以用这个来验证它:https://developer.android.com/reference/androidx/fragment/app/Fragment.html#isAdded()

【讨论】:

我不太清楚fragment。你能把任何教程链接发给你吗.. guides.codepath.com/android/creating-and-using-fragments

以上是关于在片段中设置文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在flex中设置文本突出显示颜色?

如何在 Java 中设置标签(彩色文本)的颜色?

在 Plotly 3.0 中设置图例文本颜色

如何在 QTextBrowser (Html) 中设置文本颜色? (PyQt)

Kivy:在kv中设置禁用按钮上的文本颜色

如何在 Bootstrap 4 和 Sass 中设置自定义按钮文本颜色?