Che cosa differisce tra class_name.this e questo

Vedo un codice che utilizza class_name.this come parametro per il suo context e talvolta lo utilizza direttamente in un altro codice demo. Suppongo che this sia un'abbreviazione di class_name.this ?

  • ProgressDialog: come impedire la window perdita
  • Implementazione del menu Floating Action utilizzando il button di azione Float dalla libreria di supporto di Design di Android
  • Come utilizzare opencv in android studio utilizzando strumento build gradle?
  • come rilevare i font di lingua supportti dal dispositivo?
  • Come aggiungere dynamicmente più elenchi di arrays nell'elenco
  • Come impostare i margini di una window di dialogo personalizzata?
  • Limitare un'applicazione Android solo ai dispositivi armv7
  • SearchView è invisibile con il parametro collapseActionView dal 24.1 libreria di progettazione
  • Relazione One-to-Many in Android ORMLite
  • Integrazione di Twitter in un'applicazione Android
  • SQLite ha restituito un codice di errore di 14
  • Android Market - Questa applicazione è disponibile per oltre 0 dispositivi?
  • 5 Solutions collect form web for “Che cosa differisce tra class_name.this e questo”

    Lo utilizziamo quando i riferimenti di class possono essere digitati a Context. E quando this object non può essere, utilizziamo ClassName.this (ma solo se la class è child / super child [ subclass ] della class Context, come Activity / Services)


    Leggi cosa è 'Context' in Android?


    Lasciathemes spiegare con il codice di esempio (Ad esempio sto utilizzando Activity e AsyncTask )

     public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.startActivity(intent); // or MainActivity.this.startActivity(intent); // Both are same here. } private class TestTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub return null; } @Override protected void onPostExecute(Void result) { this.startActivity(intent); // You can not do. Because "this" is the current object of AsyncTask not of Activity. // So you can only use MainActivity.this.startActivity(intent); } } } 
     1.In Outer Class you directly use "this" reference 2.In Inner Class Or Abstract Class implementation Or Interface implementation use "classname.this" reference 

    Questa è una syntax speciale che consente di accedere all'istanza di class esterna da una class interiore. Considerate questo

     class X { class Y { void y() { Object y = this; Object x = X.this; } } } 

    ClassName.this consente di fare riferimento alla class esterna anche quando si trova all'interno di una class nidificata.

    Ad esempio MyClickListener è nidificato all'interno di MainAcvitiy :

     private class MyClickListener implements OnClickListener { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "I have been clicked", Toast.LENGTH_SHORT).show(); } } 

    Hai bisogno di riferimento a MainActivity.this perché il valore corrente di this è MyClickListener e non si desidera preoccuparsi di passare in un riferimento all'attività qui

    questo è usato per fare riferimento all'istanza corrente o viva della class, ma nei casi in cui u devono utilizzare le classi nidificate e la class nidificata vuole accedere al membro della class esterna, allora è fatto usando class_name.this come sarà chiaro quale class u si riferiscono a.

    fare riferimento a queste domande: –
    Qual è la differenza tra Class.this e questo in Java

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.