目前正在尝试使用捆绑包将信息从我的 IncomeFragment 和 ExpenseFragment 传输到 HomeFragment,但我不确定如何去做。我试过实现他提供的 doubleA 的代码。
这是我的 MainActivity 中的 onAcceptClicked 方法,它从相关片段中获取总收入/支出的值并将其传输到 HomeFragment:
public void onAcceptClicked(String fragment, String total) {
final FragmentManager fm = getFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
if (fragment == "income") {
HomeFragment homeFrag = new HomeFragment();
Bundle incomeBundle = new Bundle();
incomeBundle.putString(IncomeFragment.TAG, total);
//homeFrag.newInstance(total);
ft.replace(R.id.content_layout, homeFrag, HomeFragment.TAG);
ft.commit();
}
else if (fragment == "expense"){
HomeFragment homeFragment = new HomeFragment();
Bundle expenseBundle = new Bundle();
expenseBundle.putString("bundleIncome", total);
homeFragment.setArguments(expenseBundle);
ft.replace(R.id.content_layout, homeFragment, HomeFragment.TAG);
ft.commit();
}
}
我的 IncomeFragment 中有一个接口,用于与 MainActivity 通信,因此我可以使用 onAcceptClicked 方法来传输我的总数。我计划用我的 ExpenseFragment 基本上做同样的事情。下面的代码是来自我的 IncomeFragment 的片段:
public interface SendIncomeData {
public void onAcceptClicked(String fragment, String total);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_accept:
//Toast.makeText(getActivity(), stringIncomeTotal, Toast.LENGTH_LONG).show();
sendIncomeData.onAcceptClicked("income", stringIncomeTotal);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
不幸的是,我在这行代码中遇到了错误
sendIncomeData.onAcceptClicked("income", stringIncomeTotal);
这是错误
java.lang.NullPointerException: Attempt to invoke interface method 'void mos.myapplication.IncomeFragment$SendIncomeData.onAcceptClicked(java.lang.String, java.lang.String)' on a null object reference
我不知道为什么它说有一个空对象引用和/或我如何解决这个错误。
我猜想在我的 HomeFragment 中显示我的总数可能会出错,因为我没有在 MainActivity 或 IncomeFragment / ExpenseFragment 的代码中的任何地方调用下面的方法。我没有使用它的原因是因为我不确定如何获取它,以便在启动应用程序时首先打开 HomeFragment。
static HomeFragment newInstance(String total)
{
HomeFragment frag = new HomeFragment();
Bundle args = new Bundle();
args.putString(TAG, total);
frag.setArguments(args);
return frag;
}
我什至不介意从头开始,只要我可以转移总计并从 IncomeFragment > HomeFragment 和 ExpenseFragment > HomeFragment 显示它们