Intent não inicia como deveria

Boa tarde, tenho uma classe que recebe parâmetros de uma outra intent para efetuar a busca em um webservice, quando entra no onCreate, verifica se a instância está sendo criado pela primeira vez e caso não chama outra classe TagsHolder para fazer o encapsulamento, ele deveria fazer essa verificação e ativar o setInProgress para que a listView se torne visível, se não faço essa verificação, funciona, mas tenho um erro de nullpointer.
Quebrei a cabeça e não descobri o problema.

public class ShowResultsActivity extends Activity implements TaskFragment.TaskListener<List<Tags>>{
    String info;
    String array[] = new String[2];

    //Adapter para exibição das Tags na lista
    private TagsAdapter adapter;

    //Task para exibição de tags
    private ListTagsTask task;

    //Flag que indica se a lista de tags deve ser atualizada
    private boolean refresh;

    //Flag que indica se a lista de tags está em processo de atualização
    private boolean inProgress;

    private ListView listView;

    private List<Tags> tags = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tags_list);

        listView = (ListView) findViewById(R.id.list);

        //Define o adapter para lista
        adapter = new TagsAdapter();
        listView.setAdapter(adapter);

        //cria a task
        task = TaskFragment.getInstance(this, ListTagsTask.class);

        //->O problema está aqui e não descobri como consertar.
        if(savedInstanceState == null){
            //Se a activity está sendo iniciada pela primeira vez, marca a flag de refresh para true
            refresh = true;
        }else {
            // Se a activity está sendo recriada após uma mudança de configuração, obtém a lista de tags que foi salva
            // previamente e carrega o adapter
            TagsHolder holder = (TagsHolder) savedInstanceState.getSerializable("tags");
            adapter.setTags(holder.getTags());
            // Se a lista estava em processo de atualização quando a configuração mudou, exibe o indicador de progresso
            inProgress = savedInstanceState.getBoolean("inProgress");
            if (inProgress) {
                setInProgress(true);
            }
        }
       /// array = this.getIntent().getStringExtra("paramsDate").split(";");
        //Toast.makeText(getApplicationContext(), array[0].toString(), Toast.LENGTH_SHORT).show();
        //Toast.makeText(getApplicationContext(), array[1].toString(), Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.actions, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == R.id.action_refresh){
            //faz o refresh da lista
            refresh();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    private void refresh(){
        if(!ConnectivityUtils.isConnected(this)){
            // Se não existe conexão de dados, mostra o dialog de erro e termina
            ConnErrorDialog.show(getFragmentManager());
        }else{
            //Executa a task de refresh
            task.execute(0);
        }
    }

    @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        // Coloca a lista de Tags no Bundle para recuperação posterior. Encapsula a lista dentro de um
        // TagsHolder para que seja possível a inserção no Bundle
        outState.putSerializable("tags", new TagsHolder(adapter.getTags()));
        outState.putBoolean("inProgress", inProgress);
    }

    @Override
    protected void onStart() {
        super.onStart();
        //Se o refresh deve ser feito, inicia o refresh
        if(refresh){
            refresh();
            refresh = false;
        }
    }

    private void setInProgress(Boolean inProgress){
        this.inProgress = inProgress;
        listView.setVisibility(View.VISIBLE);
    }

    @Override
    public void beforeTaskExecute(int taskId) {
        // Exibe o indicador de progresso e remove os elementos da lista
        setInProgress(true);
        adapter.clear();
    }

    @Override
    public void afterTaskExecute(int taskId, List<Tags> tagses) {
        // Coloca os elementos lidos na lista e esconde o indicador de progresso
        adapter.setTags(tagses);
        setInProgress(true);
    }

    // Método chamado na UI thread logo antes da task começar
    public static class ListTagsTask extends TaskFragment<Void, List<Tags>> {

        @Override
        protected List<Tags> executeInBackground(int taskId) {
            try {
                //Cria o proxy de acesso ao webService
                WebServiceProxy proxy = new WebServiceProxy();
                //Obtém a lista de tags
                List<Tags> tags = proxy.listTags();

                //Sleep para atrasar o carregamento.
                SystemClock.sleep(1000);

                return tags;
            }catch (Exception e){
                Log.e(Constants.LOG_TAG, "Erro ao executar a task ", e);
                return Collections.emptyList();
            }
        }
    }
    //Classe que encapsula uma lista de tags. Necessária para salvar as tags em um Bundle
    public static class TagsHolder implements Serializable {
        private List<Tags> tags;

        public TagsHolder(List<Tags> tags){
            this.tags = tags;
        }
        public List<Tags> getTags(){
            return tags;
        }
    }
}

Aqui você está esquecendo de setar o o Tags no adapter quando o savedInstanceState é null

    if(savedInstanceState == null){
            //Se a activity está sendo iniciada pela primeira vez, marca a flag de refresh para true
            refresh = true;
            //adapter.setTags(SuasTagsAqui);
        }else {
            // Se a activity está sendo recriada após uma mudança de configuração, obtém a lista de tags que foi salva
            // previamente e carrega o adapter
            TagsHolder holder = (TagsHolder) savedInstanceState.getSerializable("tags");
            adapter.setTags(holder.getTags());
            // Se a lista estava em processo de atualização quando a configuração mudou, exibe o indicador de progresso
            inProgress = savedInstanceState.getBoolean("inProgress");
            if (inProgress) {
                setInProgress(true);
            }
        }

Opa, obrigado pela ajuda, eu achei o problema, um getCount meu estava errado, então o valor estava passando como null.
Valeu pela ajuda.