7

Wie mein Titel sagt, ich bin auf der Suche nach einem Äquivalent von getActivity() in meinem ActionBarActivity Klasse in meinem Android project.Android Äquivalent von getActivity() von/in ActionBarActivity

Ich mag einen Activity Parameter in AsyncTask Erklärung Objekt zu übergeben, weil ich in meiner benutzerdefinierten AsyncTask erweiterten Klasse

Hier ist ein Beispiel einfachste Code meines Projektes

public class EventCreator extends ActionBarActivity { 

private Context context; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_even_creator); 
    View v = getLayoutInflater().inflate(R.layout.activity_even_creator,null); 
    this.context = this.getBaseContext(); 

    final Button createButton = (Button)findViewById(R.id.createEventButton); 
    createButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      AsyncTask<Void,Void,Boolean> eventCreatorSend = new SendEvents(/* here need activity object */); 
      eventCreatorSend.execute(); 
     } 
    }); 

} 

    class SendEvents extends AsyncTask<Void,Void,Boolean> { 

     public Activity act; 

     SendEvents(Activity a) { 
      this.act = a; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      ((LinearLayout)act.findViewById(R.id.layout_loader_create_event)).setVisibility(View.VISIBLE); 
     } 

     @Override 
     protected Boolean doInBackground(Void... params) { 

      SystemClock.sleep(5000); 
      return true; 
     } 

     @Override 
     protected void onPostExecute(Boolean params) { 
      if (params){ 

       ((LinearLayout)act.findViewById(R.id.layout_loader_create_event)).setVisibility(View.GONE); 
       act.finish(); 
      } 
      else { 
       ((LinearLayout)act.findViewById(R.id.layout_loader_create_event)).setVisibility(View.VISIBLE); 
       Toast.makeText(act,"Fail to send event",Toast.LENGTH_SHORT).show(); 
      } 
     } 


    }; 
} 

ein Activity Objekt bin mit In eine Zeit, ich dachte, getParent() von ActionBarActivity Klasse verwenden, aber es gibt ein Null-Objekt zurück. Also, wie bekomme ich das Activity-Objekt in ActionBarActivity Klasse?

+0

Ok überall dargestellt werden kann, wo genau sind Sie dies versuchen, in Ihrem Code zu benutzen? –

Antwort

11

Try nameofactivity.this statt getActivity()

Ich benutze getActivity() immer in Fragments Aktivitäten und .this in jeder anderen Art von Activity.

+0

ARF ja, ich fand es, danke Alter :) – MrLeblond

4

Oh verdammt! Ich habe gerade eine Lösung gefunden, kurz nachdem ich meine Frage gestellt habe.

Ich benutze MyClass.this, und es ist fertig. Gefällt mir:

AsyncTask<Void,Void,Boolean> eventCreatorSend = new SendEvents(EventCreator.this); 
    eventCreatorSend.execute(); 

Hoffe, das kann jemandem helfen!

0

Der einfachste Weg ist eine Aktivität variable

// in your fragment 
Activity myActivity; 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    //fragment shouts "i know my father!!!" 
    myActivity = activity; // 
} 

jetzt Ihre Aktivitätsinstanz (der Vater)

Verwandte Themen