1
在我的應用程序中,我在主要活動中實施了Sliding菜單抽屜。 菜單的設計是自定義的,點擊菜單中的listitem會打開一個片段。如何避免導致口吃打開片段的滑動菜單滯後?
private class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// display view for selected nav drawer item
displayView(position);
}
}
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment=new LastTransactionsDetails();
break;
case 1:
fragment = new Statement_of_Transaction();
break;
case 2:
fragment = new AccountDetails();
break;
case 3:
fragment=new ProfileSetting();
break;
case 4:
fragment=new LastTransactionsDetails();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
滑動菜單的關閉顯示有點延遲,導致菜單結構不暢。片段onCreateView正在調用一個包含對webservice方法的調用的異步任務。是否因爲引起延遲的片段加載?如果是的話,我有什麼改變? 片段代碼如下:
@Override
public void onAttach(Context context) {
super.onAttach(context);
mActivity = context instanceof Activity ? (Activity) context : null;
viewUtils = new ViewUtils(mActivity);
webServicesParams = new WebServicesParams(mActivity);
database = new DbAdapter(context);
database.createDatabase();
database.open();
parseJsonResponse = new ParseJsonResponse();
showProgressDialog();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.last_transactions_details, container, false);
listView_transactions = (ListView) rootView.findViewById(R.id.listView_transactions);
try {
String jsonResponse = webServicesParams.Last_Transaction();
arr_last_trans = parseJsonResponse.getTierDetails(jsonResponse);
adapter = new LastTransactionAdapter(arr_last_trans,getActivity());
listView_transactions .setAdapter(adapter);
dismissProgressDialog();
}