2017-06-29 133 views
0

我在startActionMode()方法中遇到错误。与Cast parameter to android.view.ActionMode.Callback表达式说我必须做铸造交易,但它不是解决方案。我不知道这个问题。我在startActionMode()方法中遇到错误

你可以看一下代码:

package com.egemenzeytinci.contextmenuactionmode; 
import android.os.Build; 
import android.support.annotation.RequiresApi; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.view.ActionMode; 
import android.support.v7.view.menu.ActionMenuItemView; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

private android.view.ActionMode actionMode; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView text= (TextView) findViewById(R.id.text); 

    text.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 

      if(actionMode!=null) { 
       return false; 
      } 

      MyActionModeCallBack callBack=new MyActionModeCallBack(); 
      actionMode=startActionMode(callBack); //problem is here!!! 
      v.setSelected(true); 

      return true; 
     } 
    }); 
} 

class MyActionModeCallBack implements ActionMode.Callback { 

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     mode.getMenuInflater().inflate(R.menu.context_menu,menu); 
     return true; 
    } 

    @Override 
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     return false; 
    } 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     actionMode=null; 
    } 
} 
} 

回答

0

类MyActionModeCallBack实现android.view.ActionMode.Callback {

@Override 
    public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) { 
     return false; 
    } 

    @Override 
    public void onDestroyActionMode(android.view.ActionMode mode) { 

    } 

}}

+0

使用这个android.view.ActionMode.Callback在ActionMode.Callback的地方希望它能起作用 –

0

您dont't需要的参考动作模式来实现它。因此,用这种方法调用方法actionMode=startActionMode(callBack);,而不是这样调用startActionMode(callBack);

+0

我试试这个:startActionMode((android.view.ActionMode.Callback)callBack);不会给出错误,但是这次模拟器不会打开应用程序。 –

+0

必须有一些错误,否则应用程序必须打开。 –

0

它应该是这样的:

private ActionMode actionMode; 

不是这个:

private android.view.ActionMode actionMode; 

而且应该是这样的:

actionMode=startSupportActionMode(callBack); 

不是这个:

actionMode=startActionMode(callBack); 
相关问题