studio icon example custom bar activity android android-activity android-asynctask android-actionbaractivity

icon - toolbar android example



Android equivalente a getActivity() desde/en ActionBarActivity (3)

Al igual que mi título dice, estoy buscando un equivalente de getActivity() en mi clase ActionBarActivity en mi Android project .

Quiero pasar un parámetro Activity en el objeto de declaración AsyncTask , porque estoy usando un objeto Activity en mi clase personalizada AsyncTask personalizada

Aquí un ejemplo del código más simple de mi proyecto

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

En un momento, pensé usar getParent() desde la clase ActionBarActivity , pero devuelve un objeto nulo. Entonces, ¿cómo obtener el objeto Activity que quiero en la clase ActionBarActivity ?


La forma más fácil es una variable de Actividad

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

ahora su instancia de actividad (El padre) puede representarse en cualquier lugar


Oh demonios ! Acabo de encontrar una solución justo después de publicar mi pregunta.

Yo uso MyClass.this , y está hecho. Me gusta esto :

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

Espero que pueda ayudar a alguien!


Pruebe nameofactivity.this en getActivity() lugar getActivity()

Siempre uso getActivity() en Fragments Activities y .this en cualquier otro tipo de Activity .