单击片段后显示条形图

Showing Bar Chart after the Fragment Click

我正在尝试以图表格式显示 JSON 数据。这里的问题是当片段被加载时我得到没有可用的图表数据但是,如果我点击片段然后图表被填充。我不确定是什么阻碍了图表的初始加载。代码未显示任何错误,但片段在单击后显示图表。任何帮助表示赞赏。

主要片段

class TestFragment : Fragment() {
    var volleyRequest: RequestQueue?=null
    val TestLink="https://www.abc.app"
    companion object {
        val TAG: String = TestFragment::class.java.simpleName
        fun newInstance() = TestFragment()
    }
    lateinit var requestQueue: RequestQueue
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        activity?.title=getString(R.string.title_home)
        val view=layoutInflater.inflate(R.layout.fragment_Test,container,false)
        requestQueue=Volley.newRequestQueue(this.context)
        getTestData(TestLink,
                {
                    body -> Log.d("Network", "Success: $body")
        var    test= "[{\"date\":\"2018-12-12\",\"students\":\"10\"},{\"date\":\"2018-12-13\",\"students\":\"12\"},{\"date\":\"2018-12-14\",\"students\":\"13\"},{\"date\":\"2018-12-15\",\"students\":\"14\"},{\"date\":\"2018-12-16\",\"students\":\"11\"},{\"date\":\"2018-12-17\",\"students\":\"22\"},{\"date\":\"2018-12-18\",\"students\":\"33\"}]"
        val jsonStringArray = test.toString()
        val entries = ArrayList<BarEntry>()
        val labels = ArrayList<String>()
        val arr = JSONArray(jsonStringArray)
        for (i in 0 until arr.length()) {
            entries.add(BarEntry(arr.getJSONObject(i).getInt("students").toFloat(), i))
            labels.add(arr.getJSONObject(i).getString("date"))
        }
        val barDataSet = BarDataSet(entries, "Test Data")
        val data = BarData(labels, barDataSet)
        barChart.data = data 
        barChart.setDescriptionTextSize(10f)
        barChart.setValueTextSize(10f)
        barChart.yLabels.textSize=10f

       // volleyRequest!!.add(stringReq)
                },
               { error -> Log.d("Network", "Error", error) }
        )
    }
    override fun onDestroy() {
        super.onDestroy()
        requestQueue.cancelAll { true }
    }
    fun getTestData(Url:String, onSuccess: (String) -> Unit, onError: (Throwable) -> Unit)
    {
        print("Url Value is:"+Url)
        val petRequest = StringRequest(Request.Method.GET, Url, Response.Listener {
 onSuccess(it)
         },
                Response.ErrorListener {
                  onError(it)
                })
requestQueue.add(petRequest)
     //   volleyRequest!!.add(petRequest)
    }
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
    {
        activity?.title = getString(R.string.title_home)
        val view = inflater.inflate(R.layout.fragment_Test, container, false)
        return view
    }
}

添加数据后尝试使用barChart.invalidate();

 barChart.data = data 
 barChart.setDescriptionTextSize(10f)
 barChart.setValueTextSize(10f)
 barChart.yLabels.textSize=10f
 barChart.invalidate()

希望对您有所帮助