У меня есть метод внутри «FragmentA», и я хочу вызвать этот метод, когда я нажимаю кнопку в «FragmentB». Но он генерирует исключение NullPointerException.
Это метод, который я хочу вызвать из FragmentA
public void getdefaultvaluestoprint()
{
this.sqLiteDatabase = this.db.getWritableDatabase();
this.cursor = this.sqLiteDatabase.rawQuery("select c.account_no, c.name, c.address, c.meter_number, c.multiplier, c.type, " +
"c.year_bill, c.month_bill, " +
"c.date, c.present_reading, r.gen_system_charge, r.trans_system_chg," +
"r.system_loss_chg, r.distr_system_chg, r.supply_system_chg, r.supply_retail_chg, " +
"r.meter_system_chg, r.meter_retail_chg, r.rsfc, r.life_line_subsidy, r.ppa_refund, " +
"r.iccs_adjustment, r.generation_vat, r.transmission_vat, r.system_loss_vat, r.distribution_vat, r.others_vat, r.senior_citizen_subsidy, " +
"r.fit_all, r.missionary_elec_spug, r.envir_charge," +
"r.stranded_contract_cost, r.npc_scc_debt from Consumer as c, Rate as r on substr(r.type,1,1) = c.type where " +
"c.account_no = '101090316'", null);
this.toprintdefaultvalueaccount.clear();
this.toprintdefaultvaluename.clear();
this.toprintdefaultvalueaddress.clear();
this.toprintdefaultvaluemeter_number.clear();
this.toprintdefaultvaluemultiplier.clear();
this.toprintdefaultvaluetype.clear();
this.toprintdefaultvaluebilling_period_year.clear();
this.toprintdefaultvaluebilling_period_month.clear();
this.toprintdefaultvaluelast_reading.clear();
this.toprintdefaultvaluelast_date_record.clear();
this.toprintdefaultvaluegen_system_charge.clear();
this.toprintdefaultvaluetrans_system_chg.clear();
this.toprintdefaultvaluesystem_loss_chg.clear();
this.toprintdefaultvaluedistr_system_chg.clear();
this.toprintdefaultvaluesupply_system_chg.clear();
this.toprintdefaultvaluesupply_retail_chg.clear();
this.toprintdefaultvaluemeter_system_chg.clear();
this.toprintdefaultvaluemeter_retail_chg.clear();
this.toprintdefaultvaluersfc.clear();
this.toprintdefaultvaluelife_line_subsidy.clear();
this.toprintdefaultvalueppa_refund.clear();
this.toprintdefaultvalueiccs_adjustment.clear();
this.toprintdefaultvaluegeneration_vat.clear();
this.toprintdefaultvaluetransmission_vat.clear();
this.toprintdefaultvaluesystem_loss_vat.clear();
this.toprintdefaultvaluedistribution_vat.clear();
this.toprintdefaultvalueothers_vat.clear();
this.toprintdefaultvaluesenior_citizen_subsidy.clear();
this.toprintdefaultvaluefit_all.clear();
this.toprintdefaultvaluemissionary_elec_spug.clear();
this.toprintdefaultvalueenvir_charge.clear();
this.toprintdefaultvaluestranded_contract_cost.clear();
this.toprintdefaultvaluenpc_scc_debt.clear();
if (cursor.moveToFirst())
{
do {
this.toprintdefaultvalueaccount.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("account_no")));
this.toprintdefaultvaluename.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("name")));
this.toprintdefaultvalueaddress.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("address")));
this.toprintdefaultvaluemeter_number.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("meter_number")));
this.toprintdefaultvaluemultiplier.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("multiplier")));
this.toprintdefaultvaluetype.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("type")));
this.toprintdefaultvaluebilling_period_year.add(this.cursor.getString(this.cursor.getColumnIndex("year_bill")));
this.toprintdefaultvaluebilling_period_month.add(this.cursor.getString(this.cursor.getColumnIndex("month_bill")));
this.toprintdefaultvaluelast_reading.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("present_reading")));
this.toprintdefaultvaluelast_date_record.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("date")));
this.toprintdefaultvaluegen_system_charge.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("gen_system_charge")));
this.toprintdefaultvaluetrans_system_chg.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("trans_system_chg")));
this.toprintdefaultvaluesystem_loss_chg.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("system_loss_chg")));
this.toprintdefaultvaluedistr_system_chg.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("distr_system_chg")));
this.toprintdefaultvaluesupply_system_chg.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("supply_system_chg")));
this.toprintdefaultvaluesupply_retail_chg.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("supply_retail_chg")));
this.toprintdefaultvaluemeter_system_chg.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("meter_system_chg")));
this.toprintdefaultvaluemeter_retail_chg.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("meter_retail_chg")));
this.toprintdefaultvaluersfc.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("rsfc")));
this.toprintdefaultvaluelife_line_subsidy.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("life_line_subsidy")));
this.toprintdefaultvalueppa_refund.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("ppa_refund")));
this.toprintdefaultvalueiccs_adjustment.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("iccs_adjustment")));
this.toprintdefaultvaluegeneration_vat.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("generation_vat")));
this.toprintdefaultvaluetransmission_vat.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("transmission_vat")));
this.toprintdefaultvaluesystem_loss_vat.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("system_loss_vat")));
this.toprintdefaultvaluedistribution_vat.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("distribution_vat")));
this.toprintdefaultvalueothers_vat.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("others_vat")));
this.toprintdefaultvaluesenior_citizen_subsidy.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("senior_citizen_subsidy")));
this.toprintdefaultvaluefit_all.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("fit_all")));
this.toprintdefaultvaluemissionary_elec_spug.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("missionary_elec_spug")));
this.toprintdefaultvalueenvir_charge.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("envir_charge")));
this.toprintdefaultvaluestranded_contract_cost.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("stranded_contract_cost")));
this.toprintdefaultvaluenpc_scc_debt.add(this.cursor.getString(this.cursor.getColumnIndexOrThrow("npc_scc_debt")));
}
while (cursor.moveToNext());
}
toprintdefaultadapter = new com.vicjames.finalmeterreader.adapters.toprintAdapter
(getActivity(),
this.toprintdefaultvalueaccount,
this.toprintdefaultvaluename,
this.toprintdefaultvalueaddress,
this.toprintdefaultvaluemeter_number,
this.toprintdefaultvaluemultiplier,
this.toprintdefaultvaluetype,
this.toprintdefaultvaluebilling_period_year,
this.toprintdefaultvaluebilling_period_month,
this.toprintdefaultvaluelast_reading,
this.toprintdefaultvaluelast_date_record,
this.toprintdefaultvaluegen_system_charge,
this.toprintdefaultvaluetrans_system_chg,
this.toprintdefaultvaluesystem_loss_chg,
this.toprintdefaultvaluedistr_system_chg,
this.toprintdefaultvaluesupply_system_chg,
this.toprintdefaultvaluesupply_retail_chg,
this.toprintdefaultvaluemeter_system_chg,
this.toprintdefaultvaluemeter_retail_chg,
this.toprintdefaultvaluersfc,
this.toprintdefaultvaluelife_line_subsidy,
this.toprintdefaultvalueppa_refund,
this.toprintdefaultvalueiccs_adjustment,
this.toprintdefaultvaluegeneration_vat,
this.toprintdefaultvaluetransmission_vat,
this.toprintdefaultvaluesystem_loss_vat,
this.toprintdefaultvaluedistribution_vat,
this.toprintdefaultvalueothers_vat,
this.toprintdefaultvaluesenior_citizen_subsidy,
this.toprintdefaultvaluefit_all,
this.toprintdefaultvaluemissionary_elec_spug,
this.toprintdefaultvalueenvir_charge,
this.toprintdefaultvaluestranded_contract_cost,
this.toprintdefaultvaluenpc_scc_debt);
toprintlist.setAdapter(toprintdefaultadapter);
cursor.close();
}
Это прослушиватель при нажатии, который находится во FragmentB
private Button btnsavenewreading;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState)
{
homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, false);
btnsavenewreading = root.findViewById(R.id.btnsave);
btnsavenewreading.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) throws NullPointerException
{
FragmentManager toprintdefault = getFragmentManager();
ToolsFragment toolsFragment = (ToolsFragment)toprintdefault.findFragmentById(R.id.nav_toolsx);
toolsFragment.getdefaultvaluestoprint();
}
});
return root;
}
Это код адаптера
public class toprintAdapter extends BaseAdapter
{
Context context;
ArrayList<String> account;
ArrayList<String> name;
ArrayList<String> address;
ArrayList<String> meter_number;
ArrayList<String> multiplier;
ArrayList<String> type;
ArrayList<String> billing_period_year;
ArrayList<String> billing_period_month;
ArrayList<String> last_reading;
ArrayList<String> last_date_record;
ArrayList<String> gen_system_charge;
ArrayList<String> trans_system_chg;
ArrayList<String> system_loss_chg;
ArrayList<String> distr_system_chg;
ArrayList<String> supply_system_chg;
ArrayList<String> supply_retail_chg;
ArrayList<String> meter_system_chg;
ArrayList<String> meter_retail_chg;
ArrayList<String> rsfc;
ArrayList<String> life_line_subsidy;
ArrayList<String> ppa_refund;
ArrayList<String> iccs_adjustment;
ArrayList<String> generation_vat;
ArrayList<String> transmission_vat;
ArrayList<String> system_loss_vat;
ArrayList<String> distribution_vat;
ArrayList<String> others_vat;
ArrayList<String> senior_citizen_subsidy;
ArrayList<String> fit_all;
ArrayList<String> missionary_elec_spug;
ArrayList<String> envir_charge;
ArrayList<String> stranded_contract_cost;
ArrayList<String> npc_scc_debt;
public toprintAdapter(Context context2, ArrayList<String> account, ArrayList<String> name, ArrayList<String> address,
ArrayList<String> meter_number, ArrayList<String> multiplier, ArrayList<String> type,
ArrayList<String> billing_period_year, ArrayList<String> billing_period_month, ArrayList<String> last_reading, ArrayList<String> last_date_record,
ArrayList<String> gen_system_charge, ArrayList<String> trans_system_chg, ArrayList<String> system_loss_chg,
ArrayList<String> distr_system_chg, ArrayList<String> supply_system_chg, ArrayList<String> supply_retail_chg,
ArrayList<String> meter_system_chg, ArrayList<String> meter_retail_chg, ArrayList<String> rsfc,
ArrayList<String> life_line_subsidy, ArrayList<String> ppa_refund, ArrayList<String> iccs_adjustment,
ArrayList<String> generation_vat, ArrayList<String> transmission_vat, ArrayList<String> system_loss_vat,
ArrayList<String> distribution_vat, ArrayList<String> others_vat, ArrayList<String> senior_citizen_subsidy,
ArrayList<String> fit_all, ArrayList<String> missionary_elec_spug, ArrayList<String> envir_charge,
ArrayList<String> stranded_contract_cost, ArrayList<String> npc_scc_debt)
{
this.context = context2;
this.account = account;
this.name = name;
this.address = address;
this.meter_number = meter_number;
this.multiplier = multiplier;
this.type = type;
this.billing_period_year = billing_period_year;
this.billing_period_month = billing_period_month;
this.last_reading = last_reading;
this.last_date_record = last_date_record;
this.gen_system_charge = gen_system_charge;
this.trans_system_chg = trans_system_chg;
this.system_loss_chg = system_loss_chg;
this.distr_system_chg = distr_system_chg;
this.supply_system_chg = supply_system_chg;
this.supply_retail_chg = supply_retail_chg;
this.meter_system_chg = meter_system_chg;
this.meter_retail_chg = meter_retail_chg;
this.rsfc = rsfc;
this.life_line_subsidy = life_line_subsidy;
this.ppa_refund = ppa_refund;
this.iccs_adjustment = iccs_adjustment;
this.generation_vat = generation_vat;
this.transmission_vat = transmission_vat;
this.system_loss_vat = system_loss_vat;
this.distribution_vat = distribution_vat;
this.others_vat = others_vat;
this.senior_citizen_subsidy = senior_citizen_subsidy;
this.fit_all = fit_all;
this.missionary_elec_spug = missionary_elec_spug;
this.envir_charge = envir_charge;
this.stranded_contract_cost = stranded_contract_cost;
this.npc_scc_debt = npc_scc_debt;
}
public int getCount()
{
return this.account.size();
}
public Object getItem(int position)
{
return null;
}
public long getItemId(int position)
{
return 0L;
}
@Override
public View getView(int position, View child, ViewGroup parent)
{
toprintAdapter.Holder holder;
if (child == null)
{
@SuppressLint("WrongConstant") LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService("layout_inflater");
child = layoutInflater.inflate(R.layout.meter_reading_to_print, null);
holder = new toprintAdapter.Holder();
holder.textprintdefaultaccount = child.findViewById(R.id.p_account_no);
holder.textprintdefaultname = child.findViewById(R.id.p_name);
holder.textprintdefaultaddress = child.findViewById(R.id.p_address);
holder.textprintdefaultmeter_number = child.findViewById(R.id.p_meter_number);
holder.textprintdefaultmultiplier = child.findViewById(R.id.p_multiplier);
holder.textprintdefaulttype = child.findViewById(R.id.p_type);
holder.textprintdefaultbilling_period_year = child.findViewById(R.id.p_billing_period_year);
holder.textprintdefaultbilling_period_month = child.findViewById(R.id.p_billing_period_month);
holder.textprintdefaultlast_reading = child.findViewById(R.id.p_last_reading);
holder.textprintdefaultlast_date_record = child.findViewById(R.id.p_last_record_date_reading);
holder.textprintdefaultgen_system_charge = child.findViewById(R.id.p_rate_gen_system_charge);
holder.textprintdefaulttrans_system_chg = child.findViewById(R.id.p_rate_trans_system_chg);
holder.textprintdefaultsystem_loss_chg = child.findViewById(R.id.p_rate_system_loss_chg);
holder.textprintdefaultdistr_system_chg = child.findViewById(R.id.p_rate_distr_system_chg);
holder.textprintdefaultsupply_system_chg = child.findViewById(R.id.p_rate_supply_system_chg);
holder.textprintdefaultsupply_retail_chg = child.findViewById(R.id.p_rate_supply_retail_chg);
holder.textprintdefaultmeter_system_chg = child.findViewById(R.id.p_rate_meter_system_chg);
holder.textprintdefaultmeter_retail_chg = child.findViewById(R.id.p_rate_meter_retail_chg);
holder.textprintdefaultrsfc = child.findViewById(R.id.p_rate_rsfc);
holder.textprintdefaultlife_line_subsidy = child.findViewById(R.id.p_rate_life_line_subsidy);
holder.textprintdefaultppa_refund = child.findViewById(R.id.p_rate_ppa_refund);
holder.textprintdefaulticcs_adjustment = child.findViewById(R.id.p_rate_iccs_adjsutment);
holder.textprintdefaultgeneration_vat = child.findViewById(R.id.p_rate_generation_vat);
holder.textprintdefaulttransmission_vat = child.findViewById(R.id.p_rate_transmission_vat);
holder.textprintdefaultsystem_loss_vat = child.findViewById(R.id.p_rate_system_loss_vat);
holder.textprintdefaultdistribution_vat = child.findViewById(R.id.p_rate_distribution_vat);
holder.textprintdefaultothers_vat = child.findViewById(R.id.p_rate_others_vat);
holder.textprintdefaultsenior_citizen_subsidy = child.findViewById(R.id.p_rate_senior_ctzn_subsidy);
holder.textprintdefaultfit_all = child.findViewById(R.id.p_rate_fit_all);
holder.textprintdefaultmissionary_elec_spug = child.findViewById(R.id.p_rate_missnry_elec_spug);
holder.textprintdefaultenvir_charge = child.findViewById(R.id.p_rate_envir_charge);
holder.textprintdefaultstranded_contract_cost = child.findViewById(R.id.p_rate_strndd_cntrct_cst);
holder.textprintdefaultnpc_scc_debt = child.findViewById(R.id.p_rate_npc_scc_debt);
child.setTag(holder);
}
else
{
holder = (toprintAdapter.Holder)child.getTag();
}
holder.textprintdefaultaccount.setText(this.account.get(position));
holder.textprintdefaultname.setText(this.name.get(position));
holder.textprintdefaultaddress.setText(this.address.get(position));
holder.textprintdefaultmeter_number.setText(this.meter_number.get(position));
holder.textprintdefaultmultiplier.setText(this.multiplier.get(position));
holder.textprintdefaulttype.setText(this.type.get(position));
holder.textprintdefaultbilling_period_year.setText(this.billing_period_year.get(position));
holder.textprintdefaultbilling_period_month.setText(this.billing_period_month.get(position));
holder.textprintdefaultlast_reading.setText(this.last_reading.get(position));
holder.textprintdefaultlast_date_record.setText(this.last_date_record.get(position));
holder.textprintdefaultgen_system_charge.setText(this.gen_system_charge.get(position));
holder.textprintdefaulttrans_system_chg.setText(this.trans_system_chg.get(position));
holder.textprintdefaultsystem_loss_chg.setText(this.system_loss_chg.get(position));
holder.textprintdefaultdistr_system_chg.setText(this.distr_system_chg.get(position));
holder.textprintdefaultsupply_system_chg.setText(this.supply_system_chg.get(position));
holder.textprintdefaultsupply_retail_chg.setText(this.supply_retail_chg.get(position));
holder.textprintdefaultmeter_system_chg.setText(this.meter_system_chg.get(position));
holder.textprintdefaultmeter_retail_chg.setText(this.meter_retail_chg.get(position));
holder.textprintdefaultrsfc.setText(this.rsfc.get(position));
holder.textprintdefaultlife_line_subsidy.setText(this.life_line_subsidy.get(position));
holder.textprintdefaultppa_refund.setText(this.ppa_refund.get(position));
holder.textprintdefaulticcs_adjustment.setText(this.iccs_adjustment.get(position));
holder.textprintdefaultgeneration_vat.setText(this.generation_vat.get(position));
holder.textprintdefaulttransmission_vat.setText(this.transmission_vat.get(position));
holder.textprintdefaultsystem_loss_vat.setText(this.system_loss_vat.get(position));
holder.textprintdefaultdistribution_vat.setText(this.distribution_vat.get(position));
holder.textprintdefaultothers_vat.setText(this.others_vat.get(position));
holder.textprintdefaultsenior_citizen_subsidy.setText(this.senior_citizen_subsidy.get(position));
holder.textprintdefaultfit_all.setText(this.fit_all.get(position));
holder.textprintdefaultmissionary_elec_spug.setText(this.missionary_elec_spug.get(position));
holder.textprintdefaultenvir_charge.setText(this.envir_charge.get(position));
holder.textprintdefaultstranded_contract_cost.setText(this.stranded_contract_cost.get(position));
holder.textprintdefaultnpc_scc_debt.setText(this.npc_scc_debt.get(position));
return child;
}
public class Holder
{
TextView textprintdefaultaccount;
TextView textprintdefaultname;
TextView textprintdefaultaddress;
TextView textprintdefaultmeter_number;
TextView textprintdefaultmultiplier;
TextView textprintdefaulttype;
TextView textprintdefaultbilling_period_year;
TextView textprintdefaultbilling_period_month;
TextView textprintdefaultlast_reading;
TextView textprintdefaultlast_date_record;
TextView textprintdefaultgen_system_charge;
TextView textprintdefaulttrans_system_chg;
TextView textprintdefaultsystem_loss_chg;
TextView textprintdefaultdistr_system_chg;
TextView textprintdefaultsupply_system_chg;
TextView textprintdefaultsupply_retail_chg;
TextView textprintdefaultmeter_system_chg;
TextView textprintdefaultmeter_retail_chg;
TextView textprintdefaultrsfc;
TextView textprintdefaultlife_line_subsidy;
TextView textprintdefaultppa_refund;
TextView textprintdefaulticcs_adjustment;
TextView textprintdefaultgeneration_vat;
TextView textprintdefaulttransmission_vat;
TextView textprintdefaultsystem_loss_vat;
TextView textprintdefaultdistribution_vat;
TextView textprintdefaultothers_vat;
TextView textprintdefaultsenior_citizen_subsidy;
TextView textprintdefaultfit_all;
TextView textprintdefaultmissionary_elec_spug;
TextView textprintdefaultenvir_charge;
TextView textprintdefaultstranded_contract_cost;
TextView textprintdefaultnpc_scc_debt;
public Holder()
{
}
}
}
Это ошибка
Process: com.vicjames.finalmeterreader, PID: 26494
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.vicjames.finalmeterreader.ui.tools.ToolsFragment.getdefaultvaluestoprint()' on a null object reference
at com.vicjames.finalmeterreader.ui.home.HomeFragment$4.onClick(HomeFragment.java:119)
at android.view.View.performClick(View.java:6412)
at android.view.View$PerformClick.run(View.java:25341)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:202)
at android.app.ActivityThread.main(ActivityThread.java:6962)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888)
Я искал несколько дней, но не могу найти решение. Единственное, что я знаю сейчас, это то, что фрагменты не могут общаться напрямую, но я все еще не знаю, как это исправить. Нужна помощь: (