我的项目有一个名为MainActivity的活动和一个BrowserActivity扩展对话框服务。

MainActivity将在启动的应用程序上使用BrowserActivity。

我想BrowserActivity可以访问MainActivity的public方法。

像这样的东西:
MainActivity上的方法:

public void chooseShare(Intent intent)
{
    try
    {
        startActivityForResult( intent , PICK_SHARE);
    } catch (android.content.ActivityNotFoundException ex)
    {
        Log.e("Share" , ex.getMessage());
    }

}


我想在BrowserActivity上做:
(伪码)

((MainActivity)BrowserActivity.this.getOwnerActivity()).chooseShare(intent);


我尝试这样做:

MainActivity ma = new MainActivity();
ma.chooseShare(i);


但是,它不起作用,它将引发NULLPointerException。

因为我需要startActivityForResult()而不是startActivity()来获取回调结果。

我在SOF上进行挖掘,发现startActivityForResult()应该从Activity开始,而不是Dialog

谢谢。

最佳答案

如果getParent()在同一项目中,则应该可以使用它。

Activity parent = getParent();
if (parent instanceof MainActivity)
    ((MainActivity)parent).chooseShare(i);


另一种选择是将其与ibinder绑定并使用服务或实现接口。

Services | Android Developers

关于android - 从对话框访问父 Activity 的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18755874/

10-09 09:51