@Override doit remplacer ou de mettre en œuvre un supertype
J'obtiens une erreur pour @Override
, et il est dit que je doit remplacer ou de mettre en œuvre un supertype.
C'est mon code, et le peu qui me donne l'erreur est protégé vide onNewIntent(Intent intent).
Grâce
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);
}
}
Vous devez vous connecter pour publier un commentaire.
OnNewIntent ne peut être substituée à une Activité. Vous êtes étendant dans votre carte. Pouvez-vous passer par la méthode à l'Activité de la classe et de l'essayer?
OnNewIntent
est fonction deActivity
et ne peut être redéfinie dans une classe quiextends
Activity
. Vous êtes étendant dans votreProductListAdapter
l'extension deAdapter
.Moyens déplacer le code de votre classe supérieure
CartListActivity
dans lequel vous avez déclaréProductListAdapter
classeL' @Override annotation indique au compilateur que vous avez l'intention de remplacer une méthode d'une sous-classe (ou l'interface). Si vous n'avez pas (par exemple parce que vous avez changé la signature et de ne plus remplacer), il va générer un message d'avertissement. Avez-vous changé quelque chose à propos de la signature de la méthode ou du copié/déplacé de quelque part d'autre?
Votre projet est configuré pour utiliser le JRE niveau de la source de 1.4 (ou inférieur). Pour résoudre ce problème dans Eclipse
Properties
du projet Java dans EclipseJava Compiler
menuCompiler Compliance Level
est fixée à 1,5 ou plusVeux juste vous faire savoir que le
@Override
annotation n'est pas nécessaire de remplacer une méthode.