我是android开发的新手。我将代码从 MainActivity 转移到 Fragment 类。在我的 onCreateView 方法中,我正在调用 viewFunds() 方法来动态显示来自 SQLite 的数据。
但是,当我单击该片段的选项卡时,应用程序会在到达 removeAllViews 行时关闭。每次调用此方法刷新数据时,我都需要先删除所有视图。
由于我也在其他方法中调用 ViewFunds(),例如在删除数据时,我调用它来刷新屏幕上的结果。
请参见下面的代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootview = inflater.inflate(R.layout.activity_settings_tab, container, false);
super.onCreate(savedInstanceState);
myDb = new DatabaseHelper(getContext());
btnAddData = (Button) rootview.findViewById(R.id.button_add);
btnviewAll = (Button) rootview.findViewById(R.id.button_viewAll);
btnAddFund = (Button) rootview.findViewById(R.id.button_AddFund);
btnviewUpdate = (Button) rootview.findViewById(R.id.button_update);
editEmergencyFund = (EditText) rootview.findViewById(R.id.edit_EmergencyFund);
editProsperityFund = (EditText) rootview.findViewById(R.id.edit_ProsperityFund);
editRewardFund = (EditText) rootview.findViewById(R.id.edit_RewardFund);
viewAll(); //this is for a button
viewFunds();//this is executed when the fragment is called
return inflater.inflate(R.layout.activity_settings_tab, container, false);
}
public void viewFunds() {
Cursor res2 = myDb.getConfigData();
res2.moveToFirst();
final View linearLayout = getActivity().findViewById(R.id.ll_config);
((LinearLayout) linearLayout.getParent()).removeAllViews(); //clear layout first - LINE WITH ISSUE
((LinearLayout) linearLayout.getParent()).setGravity(Gravity.CENTER);
//some code follows...
}
在 removeAllViews 行之后编写的这组代码的最后一行也会导致应用程序关闭:
LinearLayout llh = new LinearLayout(getActivity());
llh.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams lp_llh = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
llh.setLayoutParams(lp_llh);
((LinearLayout) linearLayout.getParent()).addView(llh); //code that causes app to close
在此先感谢您的帮助。