Я думаю, что то, что вы пытаетесь сделать, в корне плохое. Для начала, вне кода Activity, нет никаких гарантий, что активность все еще существует - менеджер памяти, возможно, очистил ее, пользователь мог нажать Back и т. Д. Думайте о Activity как о независимых объектах - вы можете запустить их, и вы можете получить результат обратно, когда они закончат то, что делают, но это все.
Подумайте, действительно ли вам нужно программно закрыть действие извне - я бы сказал, что это необычный дизайн, но есть обстоятельства, когда это может быть уместно.
Если это так, то я думаю, что вам нужна система публикации / подписки, в которой MyCustomActivity может зарегистрировать прослушиватель в MyJavaClass, а затем получить обратный вызов, после чего он может сам "завершить".
public Activity activity implements FinishListener
{
public void onCreate(...)
{
//where does MyJavaClass come from? see in a minute
MyJavaClass myjava = getMyJavaclass();
myJava.addFinishListener( this );
}
public void onFinishCallback()
{
this.finish();
}
}
и
public class MyJavaClass
{
private List<FinishListener> finishListeners = ...;
public void addFinishListener( FinishListener fl )
{
this.finishListeners.add(fl);
}
public closeActivity(Context context)
{
for ( FinishListener fl : finishListeners )
{
fl.onFinishCallback();
}
}
}
и
public interface FinishListener
{
void onFinishCallback();
}
Теперь единственной оставшейся проблемой является то, как получить MyJavaClass из Activity. Это зависит от вас - вы, возможно, уже знаете, как, вы можете поместить его в реализацию приложения, это может быть одиночный (плохой), слушатели могут быть статическими (плохими) или различными другими вариантами.
О, и не забудьте снова удалить слушателя в методе Activity onDestroy()
!