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
.