错误为什么工作上下文动作模式启动ActionModeis不适用的参数(ActionMode [英] Error why working contextual action mode start ActionModeis not applicable for the arguments (ActionMode
问题描述
我下面的教程 11。练习:使用上下文动作模式
但我有此错误:
mActionMode = Display.this.startActionMode(mActionModeCallback);
view.setSelected(真); 错误:在此类活动的方法startActionMode(ActionMode.Callback)不适用于参数(ActionMode.Callback)
我查这个<一个href=\"http://stackoverflow.com/questions/24926558/the-method-startsupportactionmodeactionmode-callback-is-undefined-for-the-type\">stackoverflow回答
他们说,添加
ActionBarActivity活性=(ActionBarActivity)getActivity();
activity.startSupportActionMode(modeCallBack);
我有这个错误
的方法getActivity()是未定义的类型显示
我在做什么错了?下面是我的code。
包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 {
私人最终静态字符串变量=MainActivity;
受保护对象mActionMode;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState);
的setContentView(R.layout.grid_main);
//必须使用getSupportActionBar从android.support.v7.app
//动作条动作条= getSupportActionBar();
//getActionBar().setDisplayHomeAsUpEnabled(true); ActionBarActivity活性=(ActionBarActivity)getActivity();
activity.startSupportActionMode(modeCallBack); 查看查看= findViewById(R.id.gridview);
view.setOnLongClickListener(新View.OnLongClickListener(){
//调用时,someView用户长时间点击
公共布尔onLongClick(查看视图){
如果(mActionMode!= NULL){
返回false;
} //使用以上定义的ActionMode.Callback启动CAB
mActionMode = Display.this.startActionMode(mActionModeCallback);
view.setSelected(真);
返回true;
}
});
GridView控件的GridView =(GridView控件)findViewById(R.id.gridview);
gridview.setAdapter(新ImageAdapter(本)); gridview.setOnItemClickListener(新OnItemClickListener(){ 公共无效onItemClick(适配器视图&LT;&GT;母公司,视图V,INT位置,长的id){
//发送意图SingleViewActivity
意图I =新意图(getApplicationContext(),SingleViewActivity.class);
//传递图像索引
i.putExtra(ID,位置);
startActivity(ⅰ);
}}); }
@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
//充气菜单;如果是present这增加了项目操作栏。
MenuInflater吹气= getMenuInflater();
inflater.inflate(R.menu.activity_main_actions,菜单);
返回super.onCreateOptionsMenu(菜单);
} 公共布尔onOptionsItemSelected(菜单项项)
{
super.onOptionsItemSelected(项目); 开关(item.getItemId()){ 案例R.id.ic_action_person:
Toast.makeText(这一点,创建一个新帐户,请,Toast.LENGTH_SHORT).show();
意向意图=新意图(这一点,Register.class);
startActivity(意向);
返回true; 案例R.id.ic_action_search: Toast.makeText(这一点,搜索新形象,Toast.LENGTH_SHORT).show();
意图ISEARCH =新意图(这一点,Search.class);
startActivity(ISEARCH);
返回true; 案例R.id.ic_action_picture:
Toast.makeText(这一点,搜索新照片,Toast.LENGTH_SHORT).show();
意图iphotos =新意图(这一点,Display.class);
startActivity(iphotos);
返回true;
}
返回true;
} 私人ActionMode.Callback mActionModeCallback =新ActionMode.Callback(){ //创建行动模式时调用; startActionMode()被调用
公共布尔onCreateActionMode(ActionMode模式,菜单菜单){
//充气菜单资源提供上下文菜单项
MenuInflater吹气= mode.getMenuInflater();
//假设你有contexual.xml菜单资源
inflater.inflate(R.menu.activity_main_actions,菜单);
返回true;
} //调用时显示的动作模式各一次。之后总是叫
// onCreateActionMode,但
如果模式被无效//可以多次调用。
在prepareActionMode公共布尔(ActionMode模式,菜单菜单){
返回false;如果不采取//返回false
} //当用户选择上下文菜单项称为
公共布尔onActionItemClicked(ActionMode模式,菜单项项){
开关(item.getItemId()){
案例R.id.ic_action_picture:
Toast.makeText(Display.this,选定菜单
Toast.LENGTH_LONG).show();
mode.finish(); //动作采摘,所以关闭CAB
返回true;
默认:
返回false;
}
} //当用户退出的动作模式称为
公共无效onDestroyActionMode(ActionMode模式){
mActionMode = NULL;
}
};}
您显示类扩展ActionBarActivity,这意味着一个汇入作业活动使there's没有必要使用 getActivity()
,就可以直接使用这样的方法:
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
/ *这个方法是可行的ActionBarActivity内* /
startSupportActionMode(modeCallBack);
的setContentView(R.layout.grid_main); //你的code其余来到这里
}
I am following a tutorial 11. Exercise: Using the contextual action mode
But I am having this error :
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)
I checked this stackoverflow answer they said to add
ActionBarActivity activity=(ActionBarActivity)getActivity();
activity.startSupportActionMode(modeCallBack);
I had this error
The method getActivity() is undefined for the type Display
what I am doing wrong ? the below is my code.
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;
}
};
}
Your Display class is extending ActionBarActivity, that means that it´s an Activity so there´s no need to use getActivity()
, you can directly make use of the methods like this:
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
}
这篇关于错误为什么工作上下文动作模式启动ActionModeis不适用的参数(ActionMode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!