- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试为我的 ListView 创建上下文菜单,但是当我“长按”列表项时,应用程序关闭并显示此跟踪:
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onCreateActionMode(PhoneWindow.java:2445)
at com.android.internal.app.ActionBarImpl$ActionModeImpl.dispatchOnCreate(ActionBarImpl.java:708)
at com.android.internal.app.ActionBarImpl.startActionMode(ActionBarImpl.java:392)
at android.app.Activity.onWindowStartingActionMode(Activity.java:4380)
at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionMode(PhoneWindow.java:2151)
at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionModeForChild(PhoneWindow.java:2138)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:573)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:573)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:573)
at android.view.View.startActionMode(View.java:3558)
at android.widget.AbsListView.performLongPress(AbsListView.java:2570)
at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:2530)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
我浏览了很多示例和教程,但找不到决定。安卓 API 14。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
linkButton = (Button) findViewById(R.id.link_button);
debugTxt = (TextView) findViewById(R.id.debugText);
lv = (ListView) this.findViewById(R.id.filelist);
registerForContextMenu(lv);
linkButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onClickLink();
}
});
mDbxAcctMgr = DbxAccountManager.getInstance(getApplicationContext(), appKey, appSecret);
}
@Override
protected void onResume() {
super.onResume();
if (mDbxAcctMgr.hasLinkedAccount()) {
showLinkedView();
doDropboxTest();
} else {
showUnlinkedView();
}
}
private void onClickLink() {
mDbxAcctMgr.startLink((Activity)this, REQUEST_LINK_TO_DBX);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_LINK_TO_DBX) {
if (resultCode == Activity.RESULT_OK) {
doDropboxTest();
} else {
debugTxt.setText("Link to Dropbox failed or was cancelled.");
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
private void doDropboxTest() {
try {
// Create DbxFileSystem for synchronized file access.
DbxFileSystem dbxFs = DbxFileSystem.forAccount(mDbxAcctMgr.getLinkedAccount());
items = new ArrayList<String>();
// Print the contents of the root folder. This will block until we can
// sync metadata the first time.
List<DbxFileInfo> infos = dbxFs.listFolder(DbxPath.ROOT);
debugTxt.setText("Contents of app folder:\n");
for (DbxFileInfo info : infos) {
info.path.toString();
if (info.isFolder) {
items.add(info.path.getName() + "/");
} else {
items.add(info.path.getName());
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
//lv.setLongClickable(true);
lv.setAdapter(adapter);
} catch (IOException e) {
debugTxt.setText("Dropbox test failed: " + e);
}
}
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/edit"
android:title="@string/edit" />
<item
android:id="@+id/remove"
android:title="@string/remove" />
<item
android:id="@+id/change"
android:title="@string/change" />
</menu>
谢谢帮助!
最佳答案
当您使用 registerForContextMenu()
为上下文菜单注册 View 时,Activity 将设置为接收 onCreateContextMenu()
调用。删除 lv.setOnCreateContextMenuListener()
调用,并将 onCreateContextMenu()
方法移动到 Activity。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
linkButton = (Button) findViewById(R.id.link_button);
debugTxt = (TextView) findViewById(R.id.debugText);
lv = (ListView) this.findViewById(R.id.filelist);
registerForContextMenu(lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
lv.setAdapter(adapter);
linkButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
onClickLink();
}
});
mDbxAcctMgr = DbxAccountManager.getInstance(getApplicationContext(), appKey, appSecret);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{ //here u set u rute
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.login, menu);
}
此外,当您为上下文菜单注册 lv 时,您无需调用 lv.setLongClickable()
。
关于java - 通过长按 ListView 项目,Android onCreateContextMenu 致命异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20065903/
看起来 onCreateContextMenu 根本没有被调用。在我的 ListActivity 的 onCreate 中,我有: list = getListView(); registerForC
我正在使用以下代码生成 onCreateContextMenu,但是,在单击列表项时我没有收到任何响应。 @Override public void onCreateContextMenu(Conte
我有一个为创建上下文菜单注册 ListView 的 Activity : registerForContextMenu(getListView()); 问题是长按某些项目不应显示上下文菜单,因为这些项
我正在尝试创建一个上下文菜单,根据单击的行更改可用选项。 但在创建菜单之前,我无法弄清楚如何获取被单击行在 ListView 中的行位置。 最佳答案 一点都不明显,但这是代码: public v
怎么了?? 我正在创建一个可移动的 TextView ,所以我可以将它拖放到整个屏幕上......然后,我决定向它添加上下文菜单,所以我做到了,但是上下文菜单只有在我禁用 onTouchListene
我有一个包含多个项目的 LisView。为此,我连接了一个 OnItemClickListener(作为内部类),如下所示: lv.setOnItemClickListener(new OnItemC
刚刚尝试在真实设备(HTC Desire Z with Android 2.2)上测试我的应用程序。并发现我的上下文菜单在 EditText 上根本不起作用。否则上下文菜单有效:在 ListView、
我希望捕获用户触摸事件的坐标(为此我实现了 onTouch 方法),但我还想在用户触摸屏幕时显示上下文菜单。 当同时使用 onTouch 和 onCreateContextMenu 方法时,每个触摸事
我正在尝试使用 onCreateContextMenu 从 ListView 中复制项目文本 OnCreateContextMenu and ListView items和 Copy text fro
我尝试为我的 ListView 创建上下文菜单,但是当我“长按”列表项时,应用程序关闭并显示此跟踪: FATAL EXCEPTION: main java.lang.NullPointerExcept
我正在尝试使用上下文菜单。我已经使用 SimpleCursorAdapter 为简单的 ListActivity 成功完成了此操作。 继续我想用 CursorAdapter 替换 SimpleCurs
我遇到 onCreateContextMenu 问题,仅在 API 15 和 16 上抛出错误。它在从 API 8 到 API 17(我的最小和最大目标)的所有其他 API 上工作得很好。 我尽了最大
在 onCreate 中,我将线性布局 View 附加到变量 activeView。然后调用 registerForContextMenu(activeView)。看起来一切正常,创建了上下文菜单,可
我有一个应用程序,它对 Activity 的 fragment 有很多看法。其中许多 View 需要上下文菜单,因此我必须在 View 的 onCreateContextMenu 中而不是在 Acti
我已经分析了这里的很多帖子,但没有发现任何与我的问题非常相似的问题。 基本上,我试图在 onListItemClick 中调用 openContextMenu(l)。这样做会创建一个没有 menuIn
我是一名优秀的程序员,十分优秀!