java - 覆盖在非 Activity 类中不起作用

标签 java android class android-activity overriding

我不知道,但为什么它显示从 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/

相关文章:

java - 在 Application 类中使用 SharedPreferences 数据

android - 如何获取 ActionBar View ?

android - 无法使用2种以上的布局

java - 从 Java 中的嵌入类调用方法

java - 如何在 fragment 中的Listview上显示sqlite数据库内容?

java - 如何将 Serenity 与 Junit5 结合使用?

android - 如何制作一个在一定时间间隔内改变颜色的方形进度条?

java - 如何从两个不同的循环将数据获取到构造函数中

java - Java 中已弃用的 JDBC 日期(java.sql 包)

用于社交网络应用程序的来自服务器的 Android 画廊图像