更新TextView会导致立即崩溃

时间:2019-02-19 11:24:14

标签: android

我正在使用类中的方法更新textView,当我运行应用程序时出现此错误:

A/libc: Fatal signal 6 (SIGABRT), code -6 (SI_TKILL)

我看了另一个关于stackoverflow的问题,但这是涉及webview的另一种编程方式,因此它并没有太大帮助。我尝试使用调试器来查找错误,但仍然会崩溃。
这是我的mainActivity的代码:

    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        try {
            JSONObject jsonObject = new JSONObject(s);
            dati.status = jsonObject.getString("status");
            dati.totalResults = jsonObject.getInt("totalResults");
            String articles = jsonObject.getString("articles");
            JSONArray arr = new JSONArray(articles);

            for(int i=0;i<arr.length();i++){
                JSONObject jsonPart = arr.getJSONObject(i);
                String source = jsonPart.getString("source");
                JSONObject jsonPart2 = new JSONObject(source);
                Source s1 = new Source(jsonPart2.getString("id"),jsonPart2.getString("name"));
                dati.articoli.put(i, new Article(s1,jsonPart.getString("author"),jsonPart.getString("title"),
                        jsonPart.getString("description"),jsonPart.getString("url"),jsonPart.getString("urlToImage"),jsonPart.getString("publishedAt"),
                        jsonPart.getString("content")));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        dati.stampaDati(0,txt_articolo,txt_contatore);
    }

这是我的达蒂课

    public class Dati {
public String status;
public int totalResults;
public ArrayMap<Integer,Article> articoli = new ArrayMap<Integer, Article>();

public void stampaDati(int articoloCorrente, TextView txt_articolo,TextView txt_contatore){
    Log.i("asd",Integer.toString(this.totalResults));
    txt_contatore.setText("articolo "+(articoloCorrente+1)+" di "+Integer.toString(this.totalResults));
    txt_articolo.setText("Autore:"+articoli.get(articoloCorrente).sourceA.name);
}}

我知道json解析正确,所以问题应该出在textView上。 有人可以帮我弄清楚错误的含义和含义是什么吗?

1 个答案:

答案 0 :(得分:1)

将此Integer.toString(this.totalResults)更改为String.valueOf(totalResults) 并且您不应该在textView.setText()

中使用字符串连接

例如

String displayStr1 = "articolo "+(articoloCorrente+1)+" di "+ String.valueOf(this.totalResults);
txt_contatore.setText(displayStr1);
String displayStr2 = "Autore:"+articoli.get(articoloCorrente).sourceA.name;
txt_articolo.setText(displayStr2)