我在startActionMode()
方法中遇到错误。使用Cast parameter to android.view.ActionMode.Callback
表达式表示我必须进行转换事务,但这不是解决方案。我不知道这个问题。
您可以查看代码:
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 :(得分:1)
您不需要动作模式的参考来实现它。因此,不要以这种方式调用方法actionMode=startActionMode(callBack);
,而是以这种方式调用startActionMode(callBack);
这样做。
答案 1 :(得分:0)
class 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) {
}
}}
答案 2 :(得分:0)
应该是这样的:
private ActionMode actionMode;
不是这个:
private android.view.ActionMode actionMode;
应该是这样的:
actionMode=startSupportActionMode(callBack);
不是这个:
actionMode=startActionMode(callBack);