Использовать startActivityForResult из неактивных

У меня есть MainActivity, который является Activity и другим классом (который является простым классом java), мы назовем его «SimpleClass». Теперь я хочу запустить из этого класса команду startActivityForResult.

Теперь, хотя я мог передать этот класс (SimpleClass), только контекст MainActivity, проблема в том, что u can not run context.startActivityForResult (…);

Поэтому единственный способ заставить SimpleClass использовать «startActivityForResult»; Это передать ссылку MainActivity в качестве переменной Activity в SimpleClass примерно так:

Внутри класса MainActivity я создаю экземпляр SimpleClass следующим образом:

SimpleClass simpleClass=new SimpleClass(MainActivity.this); 

Теперь вот как выглядит SimpleClass:

 public Class SimpleClass { Activity myMainActivity; public SimpleClass(Activity mainActivity) { super(); this.myMainActivity=mainActivity; } .... public void someMethod(...) { myMainActivity.startActivityForResult(...); } } 

Теперь его работа, но не является правильным способом сделать это? Я боюсь, что в будущем у меня могут быть утечки памяти.

Благодарю. лучей.

Я не знаю, является ли это хорошей практикой или нет, но casting a Context object to an Activity object компилируется отлично.

Попробуй это:

 if (mContext instanceof Activity) { ((Activity) mContext).startActivityForResult(...); } else { Log.e("mContext should be an instanceof Activity."); } 

Это должно компилироваться, и результаты должны быть доведены до фактической деятельности, содержащей контекст.

Если вам нужно получить результат из предыдущего действия, то ваш вызывающий класс должен иметь тип Activity.

Какова цель вызова Activity.startActivityForResult() если вы никогда не используете результат (по крайней мере, в соответствии с указанным вами образцом кода).

Является ли myMainActivity чем-либо результатом? Если это так, то просто сделайте SimpleClass подклассом Activity и обработайте результат из самого SimpleClass .
Если myMainActivity нуждается в результатах, то, возможно, вам нужно реорганизовать код для запуска активности из myMainActivity .

Лучшее решение:

  1. Создание SimpleClass подкласса вашего класса Activity
  2. startActivityForResult другой startActivityForResult как startActivityForResult
  3. Обработка результата в самом SimpleClass