我的项目有一个名为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/