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 .