2016-08-16 7 views
1

Я пытаюсь сделать RSS Reader, и пока я запускаю свое приложение, я получаю следующую ошибку: Ошибка :(30, 8): FeedsActivity не является абстрактным и не отменяет абстрактный метод onLoadFailed() в обратном вызове. Не могли бы вы исправить мой код?Ошибка: (30, 8) error: FeedsActivity не является абстрактным и не переопределяет абстрактный метод onLoadFailed() в обратном вызове

package com.example.news.activities; 


import com.example.news.R; 
import com.example.news.adapters.GridViewAdapter; 
import com.example.news.adapters.MenuDrawerAdapter; 
import com.example.news.interfaces.ToolbarToggle; 
import com.pkmmte.pkrss.Article; 
import com.pkmmte.pkrss.Callback; 
import com.pkmmte.pkrss.PkRSS; 

import android.app.SearchManager; 
import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.view.MenuItemCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.widget.SearchView; 
import android.view.Gravity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.GridView; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.List; 


public class FeedsActivity extends BaseActivity implements Callback, 
     SearchView.OnQueryTextListener { 

    private DrawerLayout mDrawerLayout; 
    private ListView mDrawerListView; 
    private GridView mGridView; 
    private GridViewAdapter mGridViewAdapter; 
    private List<Article> mItems = new ArrayList<Article>(); 
    private SearchView mSearchView; 

    private int selectedFeed = 0; 

    String[] menuTitles; 
    String[] feedUrls; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setActionBarIcon(R.drawable.ic_ab_drawer); 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer); 
     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, Gravity.START); 

     final ToolbarToggle toolbarToggle = new ToolbarToggle(this, mDrawerLayout, mToolbar, R.string.drawer_opened, R.string.drawer_closed); 
     toolbarToggle.setToggleListener(new ToolbarToggle.ToggleListener() { 
      @Override 
      public void onOpened() { 
       mToolbar.setTitle(R.string.drawer_opened); 
      } 

      @Override 
      public void onClosed() { 
       mToolbar.setTitle(menuTitles[selectedFeed]); 

      } 
     }); 
     mDrawerLayout.setDrawerListener(toolbarToggle); 
     toolbarToggle.syncState(); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

     menuTitles = getResources().getStringArray(R.array.menu_titles); 
     feedUrls = getResources().getStringArray(R.array.feed_urls); 
     // get drawer list view 

     mDrawerListView = (ListView) findViewById(R.id.leftMenu); 
     mDrawerListView.setAdapter(new MenuDrawerAdapter(menuTitles)); 
     mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       selectFeed(position); 
       mDrawerLayout.closeDrawers(); 
      } 
     }); 

     mGridView = (GridView) findViewById(R.id.gridView); 
     mGridViewAdapter = new GridViewAdapter(); 
     mGridView.setAdapter(mGridViewAdapter); 
     mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       // open new activity and display article 
       ArticleActivity.launch(FeedsActivity.this, view.findViewById(R.id.relative_layout), mItems.get(position)); 
      } 
     }); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     selectFeed(selectedFeed); 
    } 

    private void selectFeed(int position){ 
     selectedFeed = position; 
     PkRSS.with(FeedsActivity.this).load(feedUrls[position]).callback(this).async(); 
     mToolbar.setTitle(menuTitles[position]); 
    } 

    @Override 
    protected int getLayoutResource() { 
     return R.layout.activity_feeds; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_feeds, menu); 

     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     MenuItem searchItem = menu.findItem(R.id.action_search); 
     mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
     mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
     if (mSearchView != null) { 
      mSearchView.setOnQueryTextListener(this); 
     } 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()){ 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(Gravity.START); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void OnPreLoad() { 

    } 

    @Override 
    public void OnLoaded(List<Article> articles) { 
     mItems = articles; 
     updateGrid(mItems); 
    } 

    @Override 
    public void OnLoadFailed() { 
     FeedsActivity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       Toast.makeText(FeedsActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 

    @Override 
    public boolean onQueryTextSubmit(String s) { 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String s) { 
     searchedResults(s); 
     return true; 
    } 

    private void searchedResults(String searchString){ 
     if (searchString.length() < 3){ 
      updateGrid(mItems); 
     } 
     List<Article> filtered = new ArrayList<Article>(); 
     for (Article item : mItems) { 
      if (item.getTitle().toLowerCase().contains(searchString.toLowerCase()) || 
        item.getAuthor().toLowerCase().contains(searchString.toLowerCase())){ 
       filtered.add(item); 
      } 
     } 
     updateGrid(filtered); 
    } 

    private void updateGrid(final List<Article> items){ 
     FeedsActivity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       mGridViewAdapter.updateItems(items); 
       mGridViewAdapter.notifyDataSetChanged(); 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     if (!mSearchView.isIconified()){ 
      invalidateOptionsMenu(); 
      updateGrid(mItems); 
     }else{ 
      super.onBackPressed(); 
     } 
    } 
} 

Заранее спасибо ..

ответ

0

На основе Callback source и ошибка, которую вы включили это, наверное, вопрос капитализации. Изменение ваших обратных вызовов это должно работать (обратите внимание на нижний регистр on, так что, например, onLoadFailed и не OnLoadFailed):

@Override 
public void onPreLoad() { 
    // ... 
} 

@Override 
public void onLoaded(List<Article> articles) { 
    // ... 
} 

@Override 
public void onLoadFailed() { 
    // ... 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^