【发布时间】:2016-04-18 13:44:53
【问题描述】:
我希望从另一个活动 (RemoveStatement) 访问活动方法 (Budgeting.readFromDb())。 RemoveStatement 通过来自 BudgetingFragment(Budgeting 中的占位符片段)的意图运行。
但是,当我尝试获取 BudgetingFragment 的实例(通过 getFragmentManager().findFragmentByTag("budgetingFragment"))调用 getActivity() 时,它返回一个空对象。我似乎无法弄清楚它为什么会这样做以及如何解决它。
我尝试了以下方法:
- 给 backStack 添加标签
- 替换budgetingFragment 中的片段后调用getSupportFragmentManager().executePendingTransactions()。
任何解决此问题的帮助将不胜感激。
预算中更改片段的方法
public void onClickFragment(int id, String arrowDirection){
//Get current Fragment
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.budgetingFragment);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (currentFragment instanceof BudgetingOverviewFragment && arrowDirection == "Left"){
IncomeFragment incomeFragment = new IncomeFragment();
transaction.replace(R.id.budgetingFragment, incomeFragment, "budgetingFragment");
}
else if (currentFragment instanceof BudgetingOverviewFragment && arrowDirection == "Right"){
ExpenseFragment expenseFragment = new ExpenseFragment();
transaction.replace(R.id.budgetingFragment, expenseFragment, "budgetingFragment");
}
else if (currentFragment instanceof IncomeFragment && arrowDirection == "Right"){
BudgetingOverviewFragment overviewFragment = new BudgetingOverviewFragment();
transaction.replace(R.id.budgetingFragment, overviewFragment, "budgetingFragment");
}
else{
BudgetingOverviewFragment overviewFragment = new BudgetingOverviewFragment();
transaction.replace(R.id.budgetingFragment, overviewFragment, "budgetingFragment");
}
transaction.addToBackStack("budgetingFragment");
transaction.commit();
getSupportFragmentManager().executePendingTransactions();
}
RemoveStatements onCreate() 方法中的代码:
FragmentManager fm = getFragmentManager();
//This Fragment is a null pointer
Fragment callingFragment = fm.findFragmentByTag("budgetingFragment");
//This crashes the application as getActivity() is called on a null reference
Budgeting budgeting = (Budgeting) callingFragment.getActivity();
【问题讨论】:
标签: android android-fragments android-intent android-activity