我收到@Override的错误消息,它说我必须重写或实现一个超类型。

这是我的代码,给我错误的位是无效的onNewIntent(Intent intent)。

谢谢

 public class CartListActivity extends ListActivity {

        public class ProductListAdapter extends BaseAdapter {

            @Override
            protected void onNewIntent(Intent intent) {
                String query = "";

                if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
                    //use the query to search your data
                    query = intent.getStringExtra(SearchManager.QUERY);
                }
                int catId = intent.getIntExtra(MainActivity.SELECTED_CATEGORY, 0);
                if (catId != 0)
                    categoryId = catId;

                loader = new ListViewLoader(adapter, categoryId);
                if (query.length() > 0) {
                    loader.execute(String.format(MainActivity.WEBSERVER_GETLIST + "q=%s", categoryId, query));
                }
                else {
                    loader.execute(String.format(MainActivity.WEBSERVER_GETLIST, categoryId));
                }
            }

            private final Context context;
            private List<Product> itemList;
            public List<Product> getItemList() {
                return itemList;
            }

            public void setItemList(List<Product> itemList) {
                this.itemList = itemList;
            }

            public Context getContext() {
                return context;
            }

            public ProductListAdapter(Context c) {
                context = c;
            }

            @Override
            public int getCount() {
                if(itemList == null) return 0;
                else return itemList.size();
            }

            @Override
            public Object getItem(int position) {
                if (itemList == null) return null;
                else return itemList.get(position);
            }

            @Override
            public long getItemId(int position) {
                if (itemList == null) return 0;
                else return itemList.get(position).hashCode();
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {


                View cell = convertView;

                if (cell == null) {
                    // get layout from mobile xml
                    LayoutInflater inflater = ((Activity)context).getLayoutInflater();
                    cell = inflater.inflate(R.layout.adapter_product_list, parent, false);
                }

                Product p = itemList.get(position);

                //set value into textview according to position
                TextView textView = (TextView) cell.findViewById(R.id.product_title);
                textView.setText(p.getProductName());

                // add £ symbol
                textView = (TextView) cell.findViewById(R.id.product_info);
                textView.setText("Price: " + "£"+ p.getPrice());

                //set value into imageview according to position
                ImageView imgView = (ImageView) cell.findViewById(R.id.product_image);
                // clear the image
                imgView.setImageDrawable(null);
                //and load from the network
                p.loadImage(imgView, 54, 54);

                return cell;

            }


        }

        public static final Integer[] productIcons = {
            0, // index 0 is empty
            R.drawable.books,
            R.drawable.films,
            R.drawable.music,
            R.drawable.games,
        };

        private int categoryId;
        private ProductListAdapter adapter;
        private ListViewLoader loader;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // get the category from the intent
            Intent intent = getIntent();
            categoryId = intent.getIntExtra(MainActivity.SELECTED_CATEGORY, 0);

            adapter = new ProductListAdapter(this);
            setListAdapter(adapter);

            // Show the Up button in the action bar.
            setupActionBar();

            loader = new ListViewLoader(adapter, categoryId);
            loader.execute(String.format(MainActivity.WEBSERVER_GETLIST, categoryId));
        }

        /**
         * Set up the {@link android.app.ActionBar}.
         */
        private void setupActionBar() {

            getActionBar().setDisplayHomeAsUpEnabled(true);

        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.product_list, menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.show_cart:
                //create the intent for the cart activity
                Intent intent = new Intent(getApplicationContext(), CartActivity.class);
                startActivity(intent);
                return true;
            }
            return super.onOptionsItemSelected(item);
        }

        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            //create an intent
            Intent intent = new Intent(this, ProductActivity.class);
            Product p = (Product)adapter.getItem(position);
            //specify the extra parameters we want to pass
            intent.putExtra(MainActivity.SELECTED_CATEGORY, p.getCategoryId());
            intent.putExtra(MainActivity.SELECTED_PRODUCTID, p.getProductId());
            intent.putExtra(MainActivity.SELECTED_PRODUCTNAME, p.getProductName());
            intent.putExtra(MainActivity.SELECTED_PRODUCTPRICE, p.getPrice());
            intent.putExtra(MainActivity.SELECTED_SUITABLEFORKIDS, p.getSuitableForKids());

            startActivity(intent);
        }
    }

最佳答案

OnNewIntent只能在Activity中被覆盖。您要在适配器中扩展它。您可以将方法移到Activity类并尝试吗?

09-15 22:00