2012-09-26 9 views
22

Was bedeutet getActivity()? Ich sah irgendwo, sie schrieben MainActivity.this.startActionMode(mActionModeCallback) statt getActivity(). Könnte jemand erklären, was diese zwei Zeilen bedeuten?Was bedeutet getActivity()?

someView.setOnLongClickListener(new View.OnLongClickListener() { 
     // Called when the user long-clicks on someView 
     public boolean onLongClick(View view) { 
      if (mActionMode != null) { 
       return false; 
      } 

      // Start the CAB using the ActionMode.Callback defined above 
      mActionMode = getActivity().startActionMode(mActionModeCallback); 
      view.setSelected(true); 
      return true; 
     } 
    }); 
+1

Wahrscheinlich ist 'getActivity()' eine benutzerdefinierte Methode, die nicht von der Android-API stammt. Kannst du mehr Code posten? Insbesondere würde ich gerne wissen, ob dies in einer Klasse ist, die Activity oder etwas anderes erweitert. –

+0

Wenn Sie Fragmente verwenden, ist es nur eine Möglichkeit, den Kontext zu erhalten –

Antwort

46

Zwei wahrscheinlich Definitionen:

+1

danke! und könntest du erklären, was diese Zeile bedeutet ** MainActivity.this **? – zoey

+4

für Ihren Code in 'MainActivity',' MainActivity.this' gibt ein Activity Objekt für die Instanz von 'MainActivity' zurück, in der Sie sich befinden.' Activity' erweitert 'Context' und wird oft verwendet um einen 'Context' zu erhalten ' –

3

getActivity() - Gibt die Aktivität zurück, der dieses Fragment derzeit zugeordnet ist.

0

Ich hatte einen ähnlichen Zweifel, was ich kennen gelernt habe war getActivity() gibt die Activity zurück, zu der das Fragment gehört.

Die Methode getActivity() wird im Allgemeinen im statischen Fragment verwendet, da die zugeordnete Aktivität nicht statisch ist und nicht statisches Element nicht im statischen Element verwendet werden kann.

I used <code>getActivity()</code> here to get non-static activity to which the the placeholder fragment is associated.

7

getActivity() für fragment verwendet. Für activity, wo immer Sie this verwenden können, können Sie die this in fragment in ähnlichen Fällen mit getActivity() ersetzen.