Intereting Posts
Android Не удается получить доступ к org.apache.http.client.HttpClient Создание OnDragListener для Google Map v2 Фрагмент Проблема сборки Gradle: обновление Quickblox и httpclient на последних Android SDK23 Почему мои пользовательские состояния кнопок не работают? Как реализовать функциональность камеры с дополнительными параметрами (например, Panorama)? Использование Log.d () или Log.e () в моем коде Добавить заголовок или описание в EditText Мне нужно отправить файл изображения на сервер Clarifai для классификации изображений, но я продолжаю получать «пропущенные рамки, приложение делает слишком много работы», Что означает (savedInstanceState) Ios как сборщик даты и времени для платформы Android Обнаруживать, если соединение Wi-Fi, 3G или EDGE в Android? Модели развития Android NotificationBuilder или NotificationCompat.Builder не показывает действия Запуск службы при загрузке, но не все приложения для Android Обнаружение изменений выбора в WebView

Android-эквивалент getActivity () из / в ActionBarActivity

Как и в моем названии, я ищу эквивалент getActivity() в своем классе ActionBarActivity в своем Android project .

Я хочу передать параметр Activity в AsyncTask объявления AsyncTask , потому что я использую объект Activity в своем расширенном классе AsyncTask

Вот пример простейшего кода моего проекта

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

За какое-то время я подумал использовать getParent() из класса ActionBarActivity , но возвращает нулевой объект. Итак, как получить объект Activity, который я хочу в классе ActionBarActivity ?

Попробуйте использовать название. Это вместо getActivity()

Я всегда использую getActivity() в действиях Fragments и это в любом другом виде Activity .

Вот черт ! Я только что нашел решение сразу после отправки моего запроса.

Я использую MyClass.this , и все сделано. Как это :

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

Надеюсь, это поможет кому-то!

Самый простой способ – переменная Activity

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

Теперь ваш экземпляр активности (отец) можно представить в любом месте