本当に奇妙です。Eclipse で初めてアプリケーションを起動し、startActionMode を呼び出すと、すべて正常に動作します。アプリを閉じて再度開くと、startActionMode は null を返します。アプリで何かを変更してEclipseから再度実行するまで、常にnullが返されます。ドキュメントでは、キャンセルされた場合、startActionMode は null を返すと書かれていますが、キャンセルされた理由については説明されていません。
何か案は?ところで、私はactionbarsherlockを使用しています
更新:電話をシャットダウンするか、アプリを強制終了してアプリを再度起動すると、機能します...しかし、閉じて再度開くと同じことが起こります。
ここに私のコードがあります: ActionModeCallback クラス:
class ActionModeCallback implements ActionMode.Callback{
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextactiondownloads, menu);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
};
私の主な活動では:
public ActionMode startActionMode()
{
mActionMode = startActionMode(new ActionModeCallback());
return mActionMode;
}
私のリストビューアダプターでは:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
MainActivity activity = (MainActivity)rowView.getContext();
if (isChecked) {
if(actionmode == null){
actionmode = activity.startActionMode();
}else
{
actionmode.invalidate();
}
}
else {
activity.finishActionMode();
actionmode=null;
}
}
});