2017-03-12 8 views
1

J'ai actuellement un SwipeRefreshLayout qui n'appelle pas sa méthode OnRefresh chaque fois que je décroche. Quelque chose ne va pas avec mon code?SwipeRefreshLayout Refresh Listener n'appelant pas onRefresh()

public class MainActivity extends AppCompatActivity { 
private SwipeRefreshLayout swipe_view; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    swipe_view = (SwipeRefreshLayout) findViewById(R.id.this_will_work); 

    swipe_view.setOnRefreshListener(new OnRefreshListener() 
    { 
     @Override 
     public void onRefresh() 
     { 
      Toast.makeText(getApplicationContext(), "OnRefresh() test", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

Répondre

3

Vous devriez avoir un service ou quelque chose qui sera mis à jour comme ci-dessous:

private void refresh() { 
    startService(new Intent(this, UpdaterService.class)); 
} 

puis actualisez:

mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); 
    mSwipeRefreshLayout.setOnRefreshListener(this); 
    mSwipeRefreshLayout.post(new Runnable() { 
           @Override 
           public void run() { 
            mSwipeRefreshLayout.setRefreshing(true); 
            refresh(); 
           }}); 

//here refreshed Item 
    //getLoaderManager().initLoader(0, null, this); 

    if (savedInstanceState == null) { 
     refresh(); 
    } 

et votre onRefresh() doit contenir la même méthode refresh().

+0

'this' renvoie une erreur indiquant:' Mauvais 3ème type d'argument. Trouvé: 'my.app.name.MainActivity', requis: 'android.app.LoaderManager.LoaderCallbacks ' ' –

+1

vous pouvez hacher cette ligne si vous n'utilisez pas onLoadFinish' getLoaderManager(). InitLoader (0, 0, 0, 0) – Ibrahim

+0

Cependant, chaque fois que je suis en train de rafraichir, aucune de mes méthodes n'est appelée. Aussi 'setColorSchemeResources()' ne change pas de couleur quand il est appelé, donc à ce stade, je pense que quelque chose est cassé avec mon application. +1 Bien que pour essayer de m'aider –