返回活动时发现Nullpointer

时间:2016-02-04 12:43:15

标签: android arrays fragment jsonobject

我会尝试解释这个问题。

  1. 我有一个向服务器发出请求的活动。

       @Override 
       protected void onCreate(Bundle savedInstanceState) {
         ...
         doServerRequest();
       }
    
  2. 在请求成功时,我使用返回的JSONArray创建多个选项卡并在每个选项卡上填充循环视图。它完美无缺。

  3. 在我的适配器类中,我将一个特定的索引传递给片段 为了呈现recycleView。 JSONArray通过了 TabsAdapter构造函数。

        @Override
        public Fragment getItem(int position) {
           BloqueioFragment tab = null;
           try {
              JSONObject profissionais = profissionais.getJSONObject(position);
              BloqueioFragment tab = new BloqueioFragment(profissionais);
           } 
           catch (JSONException e) {
              System.out.println(e.getMessage());
           }
           return tab;
        }
    
  4. 片段在onActivityCreated方法上使用此JSONObject,其中填充了recycleView并初始化了recycleAdapter。

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        try {
            JSONArray profissionais = franquiasProfissionais.getJSONArray("profissionais");
            initListaBloqueio(profissionais);
            initBloqueioAdapter();
        } catch (JSONException e) {
            System.out.println("ERROR INFO: " + e.getMessage());
        }
    }
    
  5. 我在每个创建的recycleView上添加一个监听器来打开另一个 活性。

        @Override
        public void onItemClick(View view, int position) {
            ...
            startActivity(intent);
        }
    
    1. 我打开这个新活动,点击/触摸任何回收视图中的任何项目。

    2. 现在,当我触摸后退按钮返回上一个活动时,它会返回:

  6.   

    尝试在BloqueioFragment.onActivityCreated的空对象引用上调用虚方法'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)'。

    在请求成功之前调用片段onActivityCreated方法,它尝试创建选项卡并使用空对象填充recycleView。

    我希望在返回列表时再次重新加载。

    我需要做些什么来解决这个问题?

    那是json,我剪了它因为它很大。有了这个,就会从索引“name”生成两个标签,就像第一个“Castro(CS)”

    [{
        "nome": "Castro (CS)",
        "profissionais": [{
            "id": "3544",
            "nome": "ALINE BECHER SALES",
            "bloqueio_efetivacao": false,
            "ticket_medio": "2113.39",
            "dias_trabalhados": "15",
            "proc_30_dias": "297",
            "indice_aceitacao": "91.30",
            "media_produtividade": "19.8",
            "estimativa_conclusao": 59
        }, {
            "id": "12735",
            "nome": "CAMILE DE OLIVEIRA CHASTALO",
            "bloqueio_efetivacao": true,
            "ticket_medio": "1318.15",
            "dias_trabalhados": "20",
            "proc_30_dias": "466",
            "indice_aceitacao": "87.36",
            "media_produtividade": "23.3",
            "estimativa_conclusao": 50
        }, {
            "id": "5155",
            "nome": "CARLOS ROBERTO NOVAKOWSKI FILHO",
            "bloqueio_efetivacao": false,
            "ticket_medio": "1769.04",
            "dias_trabalhados": "15",
            "proc_30_dias": "154",
            "indice_aceitacao": "88.57",
            "media_produtividade": "10.3",
            "estimativa_conclusao": 113
        }, {
            "id": "3581",
            "nome": "CYNTIA ERDMAN SALATA",
            "bloqueio_efetivacao": false,
            "ticket_medio": "1658.22",
            "dias_trabalhados": "16",
            "proc_30_dias": "171",
            "indice_aceitacao": "78.43",
            "media_produtividade": "10.7",
            "estimativa_conclusao": 85
        }, {
            "id": "10090",
            "nome": "DOUGLAS PORTO FERREIRA",
            "bloqueio_efetivacao": false,
            "ticket_medio": "1161.17",
            "dias_trabalhados": "8",
            "proc_30_dias": "64",
            "indice_aceitacao": "81.25",
            "media_produtividade": "8.0",
            "estimativa_conclusao": 87
        }, {
            "id": "3597",
            "nome": "JOEL ELIAS FADEL FILHO",
            "bloqueio_efetivacao": false,
            "ticket_medio": "1606.21",
            "dias_trabalhados": "16",
            "proc_30_dias": "197",
            "indice_aceitacao": "90.00",
            "media_produtividade": "12.3",
            "estimativa_conclusao": 61
        }, {
            "id": "3579",
            "nome": "LINCOLN N\u00c9SPOLI DE CAMARGO",
            "bloqueio_efetivacao": false,
            "ticket_medio": "240.24",
            "dias_trabalhados": "25",
            "proc_30_dias": 0,
            "indice_aceitacao": "66.67",
            "media_produtividade": 0,
            "estimativa_conclusao": 0
        }, {
            "id": "3543",
            "nome": "MARIANA SCHOEMBERGER",
            "bloqueio_efetivacao": false,
            "ticket_medio": 0,
            "dias_trabalhados": 0,
            "proc_30_dias": 0,
            "indice_aceitacao": 0,
            "media_produtividade": 0,
            "estimativa_conclusao": 0
        }, {
            "id": "3724",
            "nome": "MICHELLE RIBAS BUMILLER",
            "bloqueio_efetivacao": false,
            "ticket_medio": 0,
            "dias_trabalhados": 0,
            "proc_30_dias": 0,
            "indice_aceitacao": 0,
            "media_produtividade": 0,
            "estimativa_conclusao": 0
        }, {
            "id": "143",
            "nome": "OSEIAS GOMES DE MORAES",
            "bloqueio_efetivacao": false
        }]
    }, {
        "nome": "Ponta Grossa - Oficinas",
        "profissionais": [{
            "id": "1455",
            "nome": "ADRIANA RAQUEL LOUREN\u00c7O ALMEIDA MENDON\u00c7A DURAU",
            "bloqueio_efetivacao": false,
            "ticket_medio": "666.03",
            "dias_trabalhados": "11",
            "proc_30_dias": "61",
            "indice_aceitacao": "92.86",
            "media_produtividade": "5.5",
            "estimativa_conclusao": 90
        }, {
            "id": "210",
            "nome": "AM\u00c9LIA CRISTINE BAHLS",
            "bloqueio_efetivacao": false,
            "ticket_medio": "0.00",
            "dias_trabalhados": "7",
            "proc_30_dias": 0,
            "indice_aceitacao": "0.00",
            "media_produtividade": 0,
            "estimativa_conclusao": 0
        }, {
            "id": "590",
            "nome": "ANDRESSA SORACE CRONTHAL",
            "bloqueio_efetivacao": false,
            "ticket_medio": "0.00",
            "dias_trabalhados": "4",
            "proc_30_dias": 0,
            "indice_aceitacao": "0.00",
            "media_produtividade": 0,
            "estimativa_conclusao": 0
        }, {
            "id": "4706",
            "nome": "ANELYSE ANDERES GALVAO",
            "bloqueio_efetivacao": false,
            "ticket_medio": "300.04",
            "dias_trabalhados": "8",
            "proc_30_dias": "36",
            "indice_aceitacao": "83.33",
            "media_produtividade": "4.5",
            "estimativa_conclusao": 44
        }, {
            "id": "2274",
            "nome": "CAMILA LAIZ BACOVIS",
            "bloqueio_efetivacao": false,
            "ticket_medio": "730.66",
            "dias_trabalhados": "20",
            "proc_30_dias": "124",
            "indice_aceitacao": "73.33",
            "media_produtividade": "6.2",
            "estimativa_conclusao": 23
        }, {
            "id": "713",
            "nome": "DAIANE LACERDA DANIEL",
            "bloqueio_efetivacao": false,
            "ticket_medio": "0.00",
            "dias_trabalhados": 0,
            "proc_30_dias": 0,
            "indice_aceitacao": "0.00",
            "media_produtividade": 0,
            "estimativa_conclusao": 0
        }, {
            "id": "1938",
            "nome": "EDUARDO OLIVEIRA DOS SANTOS",
            "bloqueio_efetivacao": false,
            "ticket_medio": "1392.03",
            "dias_trabalhados": "20",
            "proc_30_dias": "189",
            "indice_aceitacao": "86.36",
            "media_produtividade": "9.5",
            "estimativa_conclusao": 54
        }, {
            "id": "2255",
            "nome": "GIANCARLO DE QUADROS",
            "bloqueio_efetivacao": false,
            "ticket_medio": "1200.32",
            "dias_trabalhados": "7",
            "proc_30_dias": "11",
            "indice_aceitacao": "66.67",
            "media_produtividade": "1.6",
            "estimativa_conclusao": 49
        }, {
            "id": "2104",
            "nome": "GIOVANNA MENDES STADLER",
            "bloqueio_efetivacao": false,
            "ticket_medio": "1563.54",
            "dias_trabalhados": "11",
            "indice_aceitacao": "66.67",
            "media_produtividade": "1.6",
            "estimativa_conclusao": 49
        }]
    }]
    

    关于franquiasProfissionais。

    1. 我将请求结果传递给PagerAdapter
    2. 在PagerAdapter上,它用于我的getItem方法 已经描述过了

      BloqueioPager adapter = new BloqueioPager(getSupportFragmentManager(), tabLayout.getTabCount(), result);
      

3 个答案:

答案 0 :(得分:0)

有什么问题?

现在您有一个场景,假设您有一个即时连接。那么万一会是不是这样呢?在请求完成之前填充片段,在这种情况下,您将null实例发送给构造函数。

将填充逻辑解耦为获取请求,解析并显示。现在填写片段数据onActivityCreated

1)在片段内创建fill(JSONObject object)方法和update()方法 2)将一些ProgressView放入Fragment,向用户显示请求正在处理 3)当请求成功时,请调用fill方法和update片段 4)隐藏progressView

答案 1 :(得分:0)

我做了一些我认为不正确的事,但至少它有效。我知道当我打开活动时一切都正确加载,当我回到它时,一切都崩溃了。所以我在第二项活动中做到了这一点:

    @Override
    public void onBackPressed() {
        this.finish();
        Intent i = new Intent(getApplicationContext(), BloqueioActivity.class);
        startActivity(i);
    }

现在它正在运作,但我对此并不满意。您如何看待这种“解决方法”?

答案 2 :(得分:0)

尝试使用startActivityForResult而不是startActivity。这样,当您从第二次活动返回时,您的活动将会很有效。