18
respostas

Android II

Ola, Implementei uma barra de pesquisa, mas não sei como mostrar o resultado da busca em outra activity. Ja esta funcionando, mas o resultado é apresentado na mesma tela de pesquisa. Quero pesquisar na Tela de Pesquisa e mostrar o resultado na tela de Resultado. pode me ajudar? Segue meu codigo.


@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.search_main, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) TelaDePesquisa.this.getSystemService(Context.SEARCH_SERVICE);
        if (searchItem != null) {
            searchView = (SearchView) searchItem.getActionView();
        }
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(TelaDePesquisa.this.getComponentName()));
            searchView.setIconified(false);
        }
        return true;
    }

    @Override
    protected void onNewIntent(Intent intent) {

        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            if (searchView != null) {
                searchView.clearFocus();
            }
     }
18 respostas

.

Oi Claudinei, tudo bem ?

Cara, pelo que entendi, você quer fazer a pesquisa numa activity e o resultado na outra, é isso ?

Como você está fazendo isso ? Posta o código ai pra gente dar uma olhada.

Abraços

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.search_main, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) TelaDePesquisa.this.getSystemService(Context.SEARCH_SERVICE);
        if (searchItem != null) {
            searchView = (SearchView) searchItem.getActionView();
        }
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(TelaDePesquisa.this.getComponentName()));
            searchView.setIconified(false);
        }
        return true;
    }

    @Override
    protected void onNewIntent(Intent intent) {

        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            if (searchView != null) {
                searchView.clearFocus();
            }
     }
<searchable
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="O que procura?"
    android:label="@string/app_name"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
    android:searchSuggestIntentAction="android.intent.action.VIEW"/>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".SearchResultsActivity">

<item
    android:id="@+id/action_search"
    android:icon="@android:drawable/ic_menu_search"
    app:showAsAction="always"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:title="Pesquisar?"/>

</menu>

Se souber de algum exemplo que me ajude, ja é o suficiente, não achei nada na internet.

Claudinei,

A busca que você está fazendo é de que tipo ? No banco de dados ? Em cima de uma lista que você possui ?

Como é esse processo ?

Abraço

Minha busca vem de um banco de dados externo. Já estou recebendo a busca do banco, alimentando a listview, esta funcionando perfeito. Só queria fazer com que o resultado da busca fosse apresentada em uma nova activity.

Claudinei,

Pelo que entendi, tudo está certo. A única coisa que você quer é pegar o resultado e jogar em outra activity ?

É isso ?

Isso

Cara,

Já que está tudo certo, faça que quando a resposta chegar, você vá para outra activity, passando o resultado para ela na intent.

Parece ser um pouco óbvio pela forma que estou vendo, contudo deve ter alguma complexidade que ainda não vi.

Imagino que você esteja fazendo uma AsyncTask, assim que o resultado voltar, você consegue pedir para trocar de activity no onPostExecute, delegando o resultado para que a activity faça essa troca para ti.

É meio complexo pra mim sim, estou estudando a pouco tempo... Mas pra vocês que dão aula de programação, não vai ser um bicho de sete cabeças, neh. Vou tentar aqui. Obrigado novamente Matheus.

Claudinei,

Não foi nesse sentido que eu disse, é que parece estar sendo fácil, eu geralmente me assusto. hehe

Tenta fazer esse redirecionamento no momento que você trata a resposta da sua asynctask.

Se não der certo você nos avisa ?

O grande problema de falar de app é que se eu não ver o que você realmente está fazendo eu fico supondo as coisas mais simples, nisso parece ser fácil. Entende ?

Rsrsrs Não quis dizer nesse sentido também não, é que sou novatão mesmo e acabo fazendo umas perguntas meio toscas, que pra vocês é simples de resolver... Não tive intenção de ofender, foi mal aí.

Opa, eu quem peço !

Cara, qualquer coisa dá um toque para gente matar isso ai :D

Bom dia Matheus, consegui levar para outra tela, mas não carrega a lista.


@Override
        protected void onPostExecute(String result) {

            pdLoading.dismiss();
            List<Alunos> alunos = new ArrayList<>();

            pdLoading.dismiss();
            if(result.equals("\n" + "nenhuma linha")) {
                Toast.makeText(TelaDePesquisa.this, "Não há resultados para consulta", Toast.LENGTH_LONG).show();
            }else{

                try {
                    JSONArray jArray = new JSONArray(result);

                    for (int i = 0; i < jArray.length(); i++) {
                        JSONObject object = jArray.getJSONObject(i);
                        Alunos alunos = new Alunos();
                        alunos.setImagem(object.getString("imagem"));
                        alunos.setNome(object.getString("nome"));
                        alunos.setEndereco(object.getString("endereco"));                                                              
                        alunos.setTel(object.getString("tel"));                        
                        alunos.setEmail(object.getString("email"));                     
                        empresas.add(alunos);
                    }

                    Intent vaiPraLista = new Intent();
                    vaiPraLista.setClass(getApplicationContext(),ListaDeAlunos.class);
                    startActivity(vaiPraLista);

                } catch (JSONException e) {
                    Toast.makeText(TelaDePesquisa.this, e.toString(), Toast.LENGTH_LONG).show();
                    Toast.makeText(TelaDePesquisa.this, result.toString(), Toast.LENGTH_LONG).show();
                }

            }

        }

    }
}

Matheus. Espero que não tenha levado a mal.

Oi Claudinei, tudo bem ?

Cara, toda vez que a gente usa uma Intent, tentamos sempre falar o que queremos, se é ir para uma activity nossa ou externa. No seu caso a gente quer ir para uma sua, logo você vai usar uma intent explícita.

 new Intent( aondeVoceEsta , paraOndeVoceVai.class) ;

E com essa intent, você vai fazer que ela seja um sedex. Que consiga levar as suas informações para onde você quer.

Por isso você vai usar o método putExtra que você vai passar a chave e o valor.

Ai na sua activity, você recupera a intent e a abre com a chave dita anteriormente para pegar o valor.

Qualquer dúvida, só falar.

Abraços