Adapt chrisbanes ActionBar-PullToRefresh для фрагментов (NavigationDrawer)

Хорошо, вот моя проблема:

Я хочу реализовать библиотеку ActionBar-PullToRefresh от Chrisbanes с фрагментами, чтобы иметь возможность использовать ее с NavigationDrawer.

https://github.com/chrisbanes/ActionBar-PullToRefresh#fragments

,

Chrisbanes говорит об этом для использования с фрагментами:

Следует отметить, что PullToRefreshAttacher необходимо создать на этапе onCreate () Activity. Если вы планируете использовать эту библиотеку с помощью фрагментов, лучше всего для вашей деятельности создать PullToRefreshAttacher, а затем вернуть фрагменты из Activity.

Пример приведен в примере фрагментов и вкладок.

,

,

**** Вот и возникает вопрос: я создал PullToRefreshAttacher в своей деятельности, но как, черт возьми, я могу передать PullToRefreshAttacher мои фрагменты: S ****

Я много читал о связках и getArguments () с putSerializable и Parcelable:

Передача объекта из объекта в фрагмент

И я также прочитал эту статью, в которой sth. ((MyActivity ) getActivity()).getClassX() ; этого ((MyActivity ) getActivity()).getClassX() ; используется.

Вызов метода активности из фрагмента

Но я ничего не понял и не работал. 🙁

,

,

Вот NavigationActivity и один пример фрагмента. Я должен сказать, что я новичок в android / Java 🙂

  final String[] menuEntries = {"Start","Datum","Website","Kunden"}; final String[] fragments = { "com.blabla.MainFragment", "com.blabla.OneFragment", "com.blabla.TwoFragment", "com.blabla.KundenFragment", }; private ActionBarDrawerToggle drawerToggle; private DrawerLayout drawerAdapter; private ListView navListAdapter; private PullToRefreshAttacher mPullToRefreshAttacher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.navigation_layout); mPullToRefreshAttacher = PullToRefreshAttacher.get(this); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, menuEntries); final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.refresh_navwiev); final ListView navList = (ListView) findViewById(R.id.drawerMenu); drawerAdapter=drawer; navListAdapter=navList; getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); drawerToggle = new ActionBarDrawerToggle( this, drawer, R.drawable.navicon, R.string.drawer_open, R.string.drawer_close ) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { } }; drawer.setDrawerListener(drawerToggle); navList.setAdapter(adapter); navList.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, final int pos,long id){ drawer.setDrawerListener( new DrawerLayout.SimpleDrawerListener(){ @Override public void onDrawerClosed(View drawerView){ super.onDrawerClosed(drawerView); //Runs On completly Closed } }); //Runs Onclick if not same fragment if(getActionBar().getTitle()!= menuEntries[pos]) { Bundle bundle=new Bundle(); bundle.putString("message", "From Activity"); //Fragment zusammenbauen Fragment myFragment=new Fragment(); myFragment = Fragment.instantiate(NavigationActivity.this, fragments[pos]); myFragment.setArguments(bundle); FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); tx.setCustomAnimations(R.anim.fragmentfadein, R.anim.fragmentfadeout); tx.replace(R.id.navigationScreen, myFragment); tx.commit(); getActionBar().setTitle(menuEntries[pos]); drawer.closeDrawer(navList); } } }); Bundle bundle=new Bundle(); // bundle.putInt(PullToRefreshAttacher., position); //Fragment zusammenbauen Fragment myFragment=new Fragment(); myFragment = Fragment.instantiate(NavigationActivity.this, fragments[0]); myFragment.setArguments(bundle); FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); tx.setCustomAnimations(R.anim.fragmentfadein, R.anim.fragmentfadeout); tx.replace(R.id.navigationScreen, myFragment); tx.commit(); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { Log.i("FlosTemplate", "Menu Taste Gedrückt"); if(drawerAdapter.isDrawerOpen(navListAdapter)) { drawerAdapter.closeDrawer(navListAdapter); } else { drawerAdapter.openDrawer(navListAdapter); } return true; } return super.onKeyUp(keyCode, event); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } } 

И фрагмент

 public class MainFragment extends Fragment { public static Fragment newInstance(Context context) { MainFragment f = new MainFragment(); return f; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } } 

Было бы очень мило, если бы кто-нибудь мог мне помочь, я застрял в этом месте в течение нескольких дней 🙂

PS извините за плохой язык, я не носитель языка;)

На странице GitHub есть демонстрационный код:

https://github.com/chrisbanes/ActionBar-PullToRefresh/blob/master/samples/actionbarcompat/src/java/uk/co/senab/actionbarpulltorefresh/samples/actionbarcompat/FragmentTabsActivity.java

Добавьте это в свою деятельность:

 public PullToRefreshAttacher getPullToRefreshAttacher() { return mPullToRefreshAttacher; } 

И это для onCreateView в вашем фрагменте:

 PullToRefreshAttacher mPullToRefreshAttacher = ((NavigationActivity) getActivity()).getPullToRefreshAttacher(); 

Лучшим подходом было бы использование интерфейса, но я бы рекомендовал начать с примера GitHub.

Intereting Posts
Какое измерение мы должны использовать в android, px, dp, dip или sp? Не показывать Android и AVD-менеджер в eclipse Календарь и PagerAdapter – Неограниченные виды IllegalStateException: база данных уже закрыта (с использованием ViewPager) Genymotion замораживает весь рабочий стол Ubuntu Как добавить несколько инструментов: заменить на приложение манифеста Android? Не удалось показать верхний правый угол Строка меню в Android Studio1.3.1 SQLiteOpenHelper – создание базы данных на SD-карте OnItemClickListener потребляет события onClickListener Событие синхронизации с календарем google от android Отфильтровывать не запускаемые приложения при получении всех установленных приложений Не удается достичь некоторых отладочных приложений для Android Как запустить прозрачную деятельность, чтобы фоновая активность способна принимать события Заголовок RecyclerView под элементами в Android Сбой службы Android после того, как приложение вышло из списка последних приложений