Android 错误:为什么工作上下文操作模式start ActionMode不适用于参数(ActionMode

Android 错误:为什么工作上下文操作模式start ActionMode不适用于参数(ActionMode,android,Android,我正在学习一个教程 但我有一个错误: mActionMode = Display.this.startActionMode(mActionModeCallback); view.setSelected(true); Error: The method startActionMode(ActionMode.Callback) in the type Activity is not applicable for the arguments (ActionMod

我正在学习一个教程

但我有一个错误:

mActionMode = Display.this.startActionMode(mActionModeCallback);
                view.setSelected(true);

  Error:  The method startActionMode(ActionMode.Callback) in the type Activity is not applicable for the arguments (ActionMode.Callback)
我查过了 他们说要加上

 ActionBarActivity activity=(ActionBarActivity)getActivity();
activity.startSupportActionMode(modeCallBack);
我犯了这个错误

The method getActivity() is undefined for the type Display
我做错了什么?下面是我的代码

package com.example.sqlfirst;


import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
import android.view.ActionMode.Callback;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;


public class Display extends ActionBarActivity {
    private final static String TAG = "MainActivity";
    protected Object mActionMode;
    @Override 
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_main);
         //have to use getSupportActionBar from android.support.v7.app
       // ActionBar actionBar = getSupportActionBar();
        //getActionBar().setDisplayHomeAsUpEnabled(true);

        ActionBarActivity activity=(ActionBarActivity)getActivity();
        activity.startSupportActionMode(modeCallBack);

          View view = findViewById(R.id.gridview);
            view.setOnLongClickListener(new View.OnLongClickListener() {
              // called when the user long-clicks on someView
              public boolean onLongClick(View view) {
                if (mActionMode != null) {
                  return false;
                }

                // start the CAB using the ActionMode.Callback defined above
                mActionMode = Display.this.startActionMode(mActionModeCallback);
                view.setSelected(true);
                return true;
              }
            });






        GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this));

        gridview.setOnItemClickListener(new OnItemClickListener() {

   public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            // Send intent to SingleViewActivity
       Intent i = new Intent(getApplicationContext(), SingleViewActivity.class);
       // Pass image index
       i.putExtra("id", position);
       startActivity(i);
       } });

        }


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

       public boolean onOptionsItemSelected(MenuItem item) 
       { 
          super.onOptionsItemSelected(item); 

     switch (item.getItemId()){

     case R.id.ic_action_person:
         Toast.makeText(this, "Create a new account please", Toast.LENGTH_SHORT).show();
           Intent intent = new Intent(this, Register.class);
             startActivity(intent);
         return true;

     case R.id.ic_action_search:

         Toast.makeText(this, "Search for new images", Toast.LENGTH_SHORT).show();
         Intent  isearch= new Intent(this,Search.class);
            startActivity(isearch);
     return true;

     case R.id.ic_action_picture:
         Toast.makeText(this, "Search for new photos", Toast.LENGTH_SHORT).show();
         Intent  iphotos= new Intent(this,Display.class);
         startActivity(iphotos);
         return true;


     }
        return true;
       } 



       private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

         // Called when the action mode is created; startActionMode() was called
         public boolean onCreateActionMode(ActionMode mode, Menu menu) {
           // inflate a menu resource providing context menu items
           MenuInflater inflater = mode.getMenuInflater();
           // assumes that you have "contexual.xml" menu resources
           inflater.inflate(R.menu.activity_main_actions, menu);
           return true;
         }

         // called each time the action mode is shown. Always called after
         // onCreateActionMode, but
         // may be called multiple times if the mode is invalidated.
         public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
           return false; // Return false if nothing is done
         }

         // called when the user selects a contextual menu item
         public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
           switch (item.getItemId()) {
           case R.id.ic_action_picture:
             Toast.makeText(Display.this, "Selected menu",
                 Toast.LENGTH_LONG).show();
             mode.finish(); // Action picked, so close the CAB
             return true;
           default:
             return false;
           }
         }

         // called when the user exits the action mode
         public void onDestroyActionMode(ActionMode mode) {
           mActionMode = null;
         }
       };

}
package com.example.sqlfirst;
导入android.os.Build;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v7.app.ActionBar;
导入android.support.v7.app.ActionBar.Tab;
导入android.support.v7.app.ActionBarActivity;
导入android.util.Log;
导入android.view.Menu;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v4.app.NavUtils;
导入android.support.v7.app.ActionBarActivity;
导入android.support.v7.view.ActionMode;
导入android.view.ActionMode.Callback;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.GridView;
公共类显示扩展了ActionBarActivity{
私有最终静态字符串TAG=“MainActivity”;
保护对象模式;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_main);
//必须从android.support.v7.app使用getSupportActionBar
//ActionBar ActionBar=getSupportActionBar();
//getActionBar().setDisplayHomeAsUpEnabled(true);
ActionBarActivity活动=(ActionBarActivity)getActivity();
activity.startSupportActionMode(modeCallBack);
视图=findViewById(R.id.gridview);
view.setOnLongClickListener(新视图.OnLongClickListener(){
//当用户长时间单击someView时调用
仅长按公共布尔值(视图){
if(mActionMode!=null){
返回false;
}
//使用上面定义的ActionMode.Callback启动CAB
mActionMode=Display.this.startActionMode(mActionModeCallback);
view.setSelected(true);
返回true;
}
});
GridView GridView=(GridView)findViewById(R.id.GridView);
setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
//将意图发送到SingleViewActivity
Intent i=新的Intent(getApplicationContext(),SingleViewActivity.class);
//通过图像索引
i、 putExtra(“id”,位置);
星触觉(i);
} });
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。活动\主操作,菜单);
返回super.onCreateOptions菜单(菜单);
}
公共布尔值onOptionsItemSelected(菜单项项)
{ 
super.onOptionsItemSelected(项目);
开关(item.getItemId()){
案例R.id.ic\U行动\U人员:
Toast.makeText(这是“请创建一个新帐户”,Toast.LENGTH_SHORT.show();
意向意向=新意向(此为Register.class);
星触觉(意向);
返回true;
案例R.id.ic\U行动\U搜索:
Toast.makeText(这是“搜索新图像”,Toast.LENGTH_SHORT.show();
Intent isearch=newintent(这个,Search.class);
星触觉(isearch);
返回true;
案例R.id.ic\行动\图片:
Toast.makeText(这是“搜索新照片”,Toast.LENGTH_SHORT.show();
Intent iphotos=新的Intent(这个,Display.class);
星触觉(iphotos);
返回true;
}
返回true;
} 
private ActionMode.Callback mActionModeCallback=new ActionMode.Callback(){
//创建操作模式时调用;调用startActionMode()
公共布尔onCreateActionMode(ActionMode模式,菜单){
//为提供上下文菜单项的菜单资源充气
MenuInflater充气器=模式。getMenuInflater();
//假设您有“contexual.xml”菜单资源
充气机。充气(右菜单。活动\主操作,菜单);
返回true;
}
//每次显示动作模式时调用。始终在之后调用
//onCreateActionMode,但是
//如果模式无效,可能会调用多次。
公共布尔onPrepareActionMode(操作模式,菜单){
return false;//如果不执行任何操作,则返回false
}
//当用户选择上下文菜单项时调用
公共布尔值onActionItemClicked(ActionMode模式,菜单项){
开关(item.getItemId()){
案例R.id.ic\行动\图片:
Toast.makeText(Display.this,“选定菜单”,
Toast.LENGTH_LONG).show();
mode.finish();//已拾取操作,因此关闭驾驶室
返回true;
违约:
返回false;
}
}
//当用户退出操作模式时调用
公共void onDestroyActionMode(ActionMode模式){
mActionMode=null;
}
};
}

您的显示类正在扩展ActionBarActivity,这意味着它是一个活动,因此无需使用
getActivity()
,您可以直接使用以下方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    /* this method is available within your ActionBarActivity*/
    startSupportActionMode(modeCallBack); 
    setContentView(R.layout.grid_main);

    // The rest of your code comes here
}