2016-02-13 2 views
0

Я хочу знать, что представляет собой объект Activity, когда я начал его с помощью намерения.Что представляет собой объект действия, вызванный намерением

Это означает: Как я могу назвать объект активной активности. Или я получил что-то не так, а Activity istn представлен объектом?

Пример: В MainActivity я сделать:

ShowExampleScreen = new Intent(MainActivity.this, ExampleClass.class); 
startActivity(ShowExampleScreen); 

public class ExampleClass{ 

    oncreate(Stuff in on create) 

    public void myFunction(){ my stuff} 
} 

Как я могу использовать MyFunc в другом классе, не объявляя его статическим? Как я могу получить объект активности, который начинается с намерения?

+1

Зачем нужен объект деятельности, начатый намерением. Когда Intent запущен, он запустит Activity, обозначенный ExampleClass. Убедитесь, что ExampleClass расширяет действие и объявляет его в файле манифеста – chaitanya

+0

yes, действие начинается по желанию, но, например, когда я хочу, чтобы myFunc был классом сеттера текстового поля, и я хочу позвонить ему из другого места, мне нужно создать объект ExampleClass. Я хочу, чтобы этот объект был Объектом, запущенным Intent, поэтому я могу установить текстовые просмотры, показанные на экране активности. – Tobias

+1

Что вы ожидаете от ответа? Вы не должны вызывать методы активности из других видов деятельности. –

ответ

0

Есть несколько способов сделать это, вот несколько из них, которые я использую:

  • С другой класс/метод:

    просто передать активность в качестве параметра , так как вам нужен самый последний объект активности, вы не хотите хранить его где-нибудь, где он может стать нулевым, как только действие будет уничтожено.

  • От метода, который очень глубоко в других классах:

    Я не рекомендую это, но я иногда делаю это, просто создать статический объект деятельности в самой деятельности и убедитесь, что вы назначаете каждый раз, когда активность возобновляется, скажем, в onResume методе или OnCreate

    public static Activity app; //in your Activity as a field (instance variable) 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        app = this; 
    } 
    
  • Из фрагмента:

    MyActivity приложение = (MyActivity) getActivity(); // getActivity() - метод Фрагмента.

+0

Спасибо, я думаю, что первый ответ. Теперь я понял, создав класс хранения подкласса, из которого я создаю объект при запуске основной активности. Затем моя вторая активность экрана собирает данные из объекта данных подкласса. Поэтому мне не нужно обрабатывать этот объект Activity Object. Можете ли вы сказать мне, какой метод является «более чистым»? – Tobias

+0

Лучший способ - передать как аргумент, как все время. Это самый безопасный способ, но иногда вам нужен другой способ, так что это зависит от вас, но вам нужно быть осторожным и хорошо документировать его. –

0

В Android это то, как работает жизнь Активность цикла: enter image description here

Я бы порекомендовал вам начать reading from here, чтобы получить основы очистили первый.

В соответствии с правилами, вы НЕ ДОЛЖЕН вызвать метод одной деятельности от других

Однако, вы можете использовать startActivityForResult. т.е. вы можете запустить Activity и вернуть результат. See this для реализации

Смежные вопросы