我不知道,但为什么它显示从 onCreateContextMenu
中删除 @Override 注释?
任何人都可以告诉我为什么会这样?
我已经检查过,我的编译器设置为 java 1.6。我的 jre 设置为 1.6。
contactPHP.java
public class contactPHP extends AsyncTask<Object, Object, JSONArray>{
final contactActivity main;
private ListView listView;
public contactPHP(contactActivity indv) {
this.main = indv;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
listView = (ListView)main.findViewById(R.id.listnum);
adapter = new contactAdapter(main, imlist);
listView.setAdapter(adapter);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
main.onCreateContextMenu(menu, v, menuInfo);
CNList obj = (CNList)v.getTag();
int subs = obj.getsubstance();
menu.setHeaderTitle(obj.getname());
menu.add(0, v.getId(), 0, "Add");
menu.add(0, v.getId(), 0, "Remove");
}
}
contactActivity.java
public class contactActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact);
getLayoutInflater().inflate(R.layout.contact, null);
Intent intent = getIntent();
new contactPHP(contactActivity.this).execute();
//getNumber(contactActivity.this.getContentResolver());
}
}
更新 1
在 Activity 中添加了 onCreateContextMenu
并将 onPostExecute()
返回给 Activity,但出现错误!
contactPHP.java 已编辑
protected void onPostExecute(JSONArray json) {
main.contactPhpResponse(....);
}
contactActivity.java 已编辑
public void contactPhpResponse(ListView listView,JSONArray json){
this.registerForContextMenu(listView);
//some codes
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
this.onCreateContextMenu(menu, v, menuInfo);
CNList obj = (CNList)v.getTag();
int subs = obj.getsubstance();
menu.setHeaderTitle(obj.getname());
menu.add(0, v.getId(), 0, "Add");
menu.add(0, v.getId(), 0, "Remove");
}
LogCAT
03-04 16:36:48.883: E/AndroidRuntime(5018): FATAL EXCEPTION: main
03-04 16:36:48.883: E/AndroidRuntime(5018): Process: com.example.soc, PID: 5018
03-04 16:36:48.883: E/AndroidRuntime(5018): java.lang.StackOverflowError
03-04 16:36:48.883: E/AndroidRuntime(5018): at com.example.soc.contactActivity.onCreateContextMenu(contactActivity.java:92)
03-04 16:36:48.883: E/AndroidRuntime(5018): at com.example.soc.contactActivity.onCreateContextMenu(contactActivity.java:92)
03-04 16:36:48.883: E/AndroidRuntime(5018): at com.example.soc.contactActivity.onCreateContextMenu(contactActivity.java:92)
03-04 16:36:48.883: E/AndroidRuntime(5018): at com.example.soc.contactActivity.onCreateContextMenu(contactActivity.java:92)
这意味着这一行this.onCreateContextMenu(menu, v, menuInfo);
最佳答案
这是因为 onCreateContextMenu
不是 AsyncTask
的方法,因此您无法覆盖它。移入您的 Activity
类。另外,请尊重 java 命名约定。类名始终以大写字母开头。
关于java - 覆盖在非 Activity 类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28840262/