7
için

Android eşdeğim gibi, benim ActionBarActivity benim Android project içinde benim getActivity() eşdeğer arıyorum. benim özel AsyncTask genişletilmiş sınıfın İşteGetActivity() from/in ActionBarAktivite

bir Activity nesne kullanıyorum çünkü

Ben AsyncTask beyan nesnesindeki bir Activity parametre geçmek istiyorum Projemin

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(); 
      } 
     } 


    }; 
} 

bir örnek en basit kod olarak Bir süre, sınıfından getParent() kullanmayı düşündüm, ancak boş bir nesne döndürdü. ActionBarActivity sınıfındaki etkinlik nesnesini nasıl alabilirim?

+0

Tamam, tam olarak kodunuzda bu kullanmaya çalışıyorsanız nerede? –

cevap

11

deneyin Hep Activity başka türlü de Fragments Faaliyetleri ve .Bu içinde getActivity() kullanmak yerine getActivity()

nameofactivity.this.

+0

arf evet, onu buldum, teşekkürler dostum :) – MrLeblond

4

Oh lanet olsun! Sadece sormamı gönderdikten sonra bir çözüm buldum.

MyClass.this kullanıyorum ve bitti. Bunun gibi:

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

Bu birilerine yardım edebilir!

0

kolay yolu değişken bir Hareketi

// in your fragment 
Activity myActivity; 

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

şimdi (baba) etkinlik örneği her yerde temsil edilebilir