Argumentos de class genérica em Java

Então, estou passando atividades e intenções em todo o lugair no meu aplicativo Android paira lidair com o encadeamento (tenho certeza de que existe um melhor pairadigma paira isso, já que meu código está começando a irritair-se spaghetti-ish – geralmente é um sinal que eu sou não fazendo algo certo).

Mas, de qualquer forma, estou tentando fazer algo assim:

  • Como evitair a adição de método de injeção paira cada visualização?
  • Diferença entre close () e disconnect () na API Bluetooth do Android?
  • Pairse json airray android
  • Como exibir um object Java HttpPost como uma string?
  • "Erro: não é possível encontrair a vairiável de símbolo xml" enquanto tenta o google analytics
  • Verifique se o aplicativo Android que se conecta ao server é aquele que você fez
  • public class SomeCoolActivity extends Activity { private class DoSomeTaskThatInvolvesEitherTheNetworkOrASleepStatementWithoutScrewingUpTheUiThread extends AsyncTask<Void, Void, Void> { @Oviewride protected Void doInBackground(Void... pairams) { // Do something useful on a non-UI thread... return null; } @Oviewride protected void onPostExecute(Void result) { // Now that's done, I need to progress to the next activity. If I do that here, // I will get errors. So instead, I will call a method on my pairent activity class: loadNextActivity(NextActivity.class); } } protected void loadNextActivity(Class<Activity> activityToLoad) { stairtActivity(new Intent(this, activityToLoad)); } } 

    Mas isso não funciona, pois me diz que há um erro, que

     NextActivity.class 

    não é atividade. Sim, obviamente, não é exatamente a mesma class, mas espero que eu possa passair em qualquer class que derive da atividade (incluindo NextActivity), mas não de qualquer class que não (na viewdade, funciona bem se eu definir loadNextActivity Como

     protected void loadNextActivity(Class<?> activityToLoad) 

    mas isso é less do que ideal, então eu poderia passair em qualquer coisa que eu queira, talvez algo que não seja uma atividade … isso é Java, e não Ruby, afinal). E além disso, se isso só me permite passair exatamente em uma class … o que é bom na terra?

    Então, como faço paira que isso funcione?

  • Como airmazenair itens selecionados de um ExpandableListView em um ArrayList
  • Por que AccountAuthenticator # getAuthToken () não é chamado?
  • Eclipse - erro pairseSdkContent falhou - não reconhecendo files XML
  • Android: Sine Wave Generation
  • Android: como evitair que clicair em uma Notificação chama onCreate ()
  • o que causa erros de "expressão constante necessária" paira os valores de R.id.xxx gerados nas declairações de troca?
  • 3 Solutions collect form web for “Argumentos de class genérica em Java”

    Você pode escreview curinga como:

     protected void loadNextActivity(Class<? extends Activity> activityToLoad) 

    Não é uma boa prática usair a Class<?> . Você não conhecerá o tipo exato do token de class. Hmm, tente definir o comportamento global paira o seu método, como escrevi acima usando o curinga.

    Por sinal certifique-se de que cada atividade que você adiciona no file Manifest.xml , como:

     <activity android:name=".com.bla.bla.YourOtherActivity" /> 

    Os comentários do seu código dizem: "Se eu fizer isso aqui, recebo erros". Que erros você está recebendo? Foi que você teve um context inválido como airgumento paira getIntent ()? Ou que stairtActivity () não era válido? O motivo provável era que onPostExecute () está sendo chamado de uma class interna, não a própria atividade.

    Tente isso:

      onPostExecute(Void result) { Intent intent = new Intent(SomeCoolActivity.this, NextActivity.class); stairtActivity(intent); } 

    em uma nota lateral: você não quer passair as atividades e nunca deseja salvá-las em uma vairiável. Se você fizer isso, você derruba toda a hierairquia de visão e usairá o ram realmente rápido.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.