我有MainActivity()
和FirstFragment()
。
我正在调用来自MainActivity()
的FirstFragment中的函数。
问题是,时间getActivity()
是否返回null?
答案 0 :(得分:2)
片段开始时执行此操作
public void onViewCreated(View view, Bundle savedInstanceState) {
mcontext=getContext();
如果需要,可以轻松地将mcontext作为活动投放。
自Android API级别23以来,onAttach(活动活动)已被弃用。您需要使用onAttach(Context context)。 http://developer.android.com/reference/android/app/Fragment.html#onAttach(android.app.Activity) 所以如果你想使用onattach你需要做
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity a;
if (context instanceof Activity){
a=(Activity) context;
}
}
不要
if(getActivity()==null){
将应用程序移动到后台并返回时,get活动将返回null。 如果你使用它,它会忽略代码的这一部分,有时会产生你不知道它们来自哪里的错误。
答案 1 :(得分:1)
请使用Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='DevExpress.Xpf.Editors.TextEdit', AncestorLevel='1''. BindingExpression:(no path); DataItem=null; target element is 'Popup' (Name=''); target property is 'PlacementTarget' (type 'UIElement')
的{{1}}引用。我认为这是使用Fragment
Activity
实例的最佳实践
onAttach()
答案 2 :(得分:1)
// declare a variable activity in your fragment
private Activity activity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof Activity) {
this.activity = (Activity) context;
}
}
@Override
public void onDetach() {
super.onDetach();
this.activity = null;
}
private void initToolbar() {
// then use the var in any function
if (activity == null) {
return;
}
}
答案 3 :(得分:0)
我认为你应该通过context
尝试这样
if(isNetworkAvailable(getActivity().getContext()))
{
System.out.println("Internet is On.");
}
答案 4 :(得分:0)
而不是使用Activity引用。您可以创建Context类的引用。
private Context context;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof Activity) {//Name of your activity
this.context = (Activity) context;
}
}
答案 5 :(得分:0)
private Context mContext;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
}
然后在你想要调用功能的地方' MainActivity'像这样:
((MainActivity)mContext).theFunctionYouWanToCall();
或者如果片段可能属于多个活动,请先检查:
if(MainActivity instanceOf mContext)
((MainActivity)mContext).theFunctionYouWanToCall();
希望这有帮助!