[Android] Dúvida de iniciante

Olá galera, tenho uma dúvida de iniciante :stuck_out_tongue:

Seguinte, tenho uma Activity e uma Class, na minha Activity tenho um TextView e um ProgressBar.

Como faço para acessar estes dois elementos (TextView e ProgressBar) de dentro da minha Class?

Desculpem pela dúvida…

Vlw ae xD

Oi jaum_hc,

Não sei se entendi direito, você quer acessar os elementos de dentro da classe da Activity? Se for isso, a classe Activity tem definido o método findViewById (você vai precisar colocar um id para a View desejada no seu xml). Suponha que o seu TextView está declarado assim no xml:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/texto"
/>

Então na sua Activity você pode usar:

    TextView textView = (TextView) findViewById(R.id.texto);

Era isso?

Assim:

TextView view = (TextView )findViewById(R.edit.nomeDesseElementoEmSeuXml);

Nao nao… eu tenho a classe Activity, e tenho uma outra classe com métodos…

Tipo, tenho a classe Player e a classe PlayerActivity que extende a Activity.
Na Activity eu tenho

na classe Player eu tenho um método que converte o tempo de milisegundos para minutos, e preciso atualizar o textView da activity com o novo tempo, entendeu?
a classe Player nao extende nada, é apenas uma classe java comum…

Deu pra entender?

preciso alterar o conteúdo do textView com o método .setText()
Eu nao sei como faço pra atualizar o conteudo… nao consigo instanciar a classe Activity pq da erro na execução…

Na verdade eu consegui isso, mas apenas definindo o TextView como static, gostaria de saber como faço de outra maneira, pois não há motivos para ele ser static…

Vlw xD

Não sei se eu entendi direito, mas você não pode receber o TextView ou até mesmo a activity no construtor do Player? Ou então atualizar o texto do textView na Activity mesmo?

Então… como to fazendo um Player de Stream, nao posso criar o MediaPlayer na Activity, pois quando o usuário clica no botão voltar a música pára, então tive que criar um serviço para que ela fique rodando em background… Criei a classe Player para criar o MediaPlayer e manipulá-lo por la, e não posso atualizar o TextView na Activity pq a thread que fica lendo a posição da música está na classe Player…

Nao deu certo passar pelo construtor…

:frowning:

Acho que comecei a entender o problema :slight_smile:

Você tem a informação em uma thread diferente da thread principal, né? Nós não podemos mexer em nada da tela fora da thread principal então de alguma forma você precisa enviar uma mensagem dessa outra thread pra thread principal. Você tem algumas opções:

  • Receber a activity no seu Player, mas para alterar o texto você cria um Runnable e passa para activity.runOnUiThread(seuRunnable);
  • Você pode criar um Handler na sua Activity e passá-lo para o Player. No player você chama handler.sendMessage(mensagemComONovoTexto); e no método handleMessage(mensagemComONovoTexto) você atualiza o TextView
  • Criar e registrar um BroadcastReceiver dentro da activity. No Player você dá um sendBroadcast passando no Intent o texto da sua mensagem (tem um exemplo disso aqui: http://stackoverflow.com/questions/2463175/how-to-have-android-service-communicate-with-activity)

É algo assim?

Aee cara, exatamente isso!

Ja vou dar uma estudada, era isso que eu estava procurando, como passar informações de uma outra thread pra thread principal, é que sou meio ruim pra explicar mesmo… hauhua

Vlw, mto obrigado xD

Legal! :slight_smile:

Qualquer dúvida quanto a isso é só dar um toque!