问题:我使用EventBus的greenrobot通过一些事件。不幸的是,对于在两个之间fragments不传递数据的情况,它对我有用。因此,该事件不会被触发。
问题:我会误解这个概念吗?还是我的代码有错误?
注意:两个片段在发送事件时都存在。一个fragment是父母,另一个是孩子以显示详细信息。
详细片段:
public class DetailFragment extends Fragment {
(...)
refreshButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EventBus.getDefault().post(new IntentRefresh());
}
});
(...)
}
Run Code Online (Sandbox Code Playgroud)
EventBus类别:
public class IntentRefresh {
public IntentRefresh (){}
public void refreshParent() {
}
}
Run Code Online (Sandbox Code Playgroud)
父片段:
public class ParentFragment extends Fragment {
(...)
@Override
public void onPause() {
super.onPause();
EventBus.getDefault().unregister(this);
}
@Override
public void onResume() {
super.onResume();
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void …Run Code Online (Sandbox Code Playgroud) 我几乎不知道如何描述这种行为,所以这可能是我无法自己找到答案的原因 - 我根本就不知道如何命名这个问题.所以,如果标题是误导性的,或者问题在某种程度上是错误的,请耐心等待,但是这里来了
我有一个类方法,我打开一个文件并获取文件名:
OPENFILENAME GuiUtils::ChooseFileDialog(HWND hwnd)
{
OPENFILENAME ofn;
char szFile[260];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = (LPWSTR)szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrFilter = TEXT("Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0");
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
HANDLE hf;
// Display the Open dialog box.
if (GetOpenFileName(&ofn) == TRUE)
{
hf = CreateFile(ofn.lpstrFile,
GENERIC_READ,
0,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE)NULL);
}
return ofn;
}
Run Code Online (Sandbox Code Playgroud)
当我看到 …
从这里的第一个答案: StackOverflow#6548837 我可以在用户键入时调用回调:
from Tkinter import *
def callback(sv):
print sv.get()
root = Tk()
sv = StringVar()
sv.trace("w", lambda name, index, mode, sv=sv: callback(sv))
e = Entry(root, textvariable=sv)
e.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
但是,该事件发生在每个键入的字符上。当用户完成键入并按下Enter键或Entry小部件失去焦点(即用户单击其他位置)时,如何调用事件?
我正在编写一个图形窗口的代码,其中包含几个运行回调函数的GUI项.目前我有一个文本框和一个滑块控件,我进行了设置,以便更改文本框值不仅会更改显示的数据,还会更新滑块位置以匹配该值.我varargin遇到的问题是试图保持我的参数(在创建图形窗口时输入到main函数)被包含在父cell变量中.当我的顶层varargin包含一个值参数对,varargin是一cell维的1x2的.没关系.通常,可以将所有这些参数传递给内部函数调用,如下所示:
function topfunc(varargin)
%code
do_something(varargin{:})
Run Code Online (Sandbox Code Playgroud)
该函数dosomething可以看到正确的参数列表.但是,当我通过callback定义传递varargins时,就像在
txtui = uicontrol(hf,'Style','edit','string',fristframe,'backgroundcolor','y',...
'position',[10 100 50 20],'Tag','Scaler','UserData',lsatframe,...
'Callback',{@doslide,adcname,mode,goodframes,{varargin{:}} } );
Run Code Online (Sandbox Code Playgroud)
然后该函数 doslide调用绘图更新功能dordplot
function doslide(theui,event,fileName,mode, goodframes,varargin)
% code snipped...
dordplot(slidinfo,event,fileName,mode,goodframes,varargin{:});
end
Run Code Online (Sandbox Code Playgroud)
里面doslide,varargin是含有期望的1×2单元1x1的细胞.
我在我的最终函数中添加了一个kludge修复程序,其中varargin实际使用的内容与行
varargin = varargin{:};
Run Code Online (Sandbox Code Playgroud)
但是,varargin首先将它包裹在一个细胞内似乎是错误的.
有没有修复,或者我是否错误地定义了我的回调函数调用?
我知道这已被问了好几百次了,不过我以前写过很多回调函数而且我觉得我对我的问题有点盲目/
我有一个功能:
function firstSend(){
client.write(Buffer.from([0x5C,0x57,0x31,0x32,0x33,0x34,0x2F]));
check(function(msg){
if(msg == true){
console.log("Lets go");
}
});
}
Run Code Online (Sandbox Code Playgroud)
调用该函数check与回调
完成后,check函数返回true:
function check(callback) {
let m;
if(message != null) m = message.trim();
if(m != "OK"){
setTimeout(check, 1000);
return;
}
return callback(true);
}
Run Code Online (Sandbox Code Playgroud)
一切正常,直到它尝试进行回调,此时它告诉我它不是一个函数.
我已经记录了回调,它记录为一个函数,所以我有点难过
我是节点和回调的新手.我试图将一个组列表拆分成一个数组.这些组用逗号分隔或用" - "分隔.最后一个意味着它是一个间隔,所以如果有22-25则意味着:22,23,24,25.我尝试了以下代码.
var groups = ["13-16","21-24","33"];
var splitgroups = function(groups, callback){
var result = [];
console.log(groups.length);
for(var i=0; i<groups.length; i++){
var cbr = callback(groups[i]);
result = result.concat(cbr);
}
return result;
}
var handlegroupinterval = function(group){
var temparr = [];
try {
temparr = group.split('-');
}
catch(err) {
console.log(err.message);
}
console.log("groups split: "+group);
if(temparr.length>1){
var lowerbound = parseInt(temparr[0]);
var upperbound = parseInt(temparr[1]);
temparr = [];
for(var j=lowerbound; j<=upperbound; j++){
temparr.push(j);
}
}
return temparr;
}
var tempgroups = splitgroups(groups, function(res){handlegroupinterval(res)}); …Run Code Online (Sandbox Code Playgroud) io.grpc.StatusRuntimeException: CANCELLED
at io.grpc.Status.asRuntimeException(Status.java:539)
at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:439)
at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:422)
at io.grpc.internal.ClientCallImpl.access$100(ClientCallImpl.java:74)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:508)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$700(ClientCallImpl.java:425)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:540)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52)
at io.grpc.internal.SerializeReentrantCallsDirectExecutor.execute(SerializeReentrantCallsDirectExecutor.java:64)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.closed(ClientCallImpl.java:544)
at io.grpc.internal.AbstractClientStream2$TransportState.closeListener(AbstractClientStream2.java:307)
at io.grpc.internal.AbstractClientStream2$TransportState.transportReportStatus(AbstractClientStream2.java:287)
at io.grpc.netty.NettyClientHandler.cancelStream(NettyClientHandler.java:455)
at io.grpc.netty.NettyClientHandler.write(NettyClientHandler.java:231)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:739)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:731)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:817)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:724)
at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1022)
at io.netty.channel.AbstractChannel.write(AbstractChannel.java:291)
at io.grpc.netty.WriteQueue.flush(WriteQueue.java:124)
at io.grpc.netty.WriteQueue.access$000(WriteQueue.java:46)
at io.grpc.netty.WriteQueue$1.run(WriteQueue.java:58)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:445)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
当我在带有Future&回调的grpc服务器句柄进程中调用另一个grpc服务时,出现了上述异常。
我的代码是这样的:
handle(){
....
***FutureClient futureClient = ...
ListenableFuture<***> future = futureClient.call(...);
Futures.addCallback(future, new FutureCallback<>() {...});
...
}
Run Code Online (Sandbox Code Playgroud)
进程handle()完成后,访问被取消。
我该如何解决该问题?
今天我尝试使用一个很好的回调:after_commit在对象写入数据库时触发,但是,我收到了来自Rails的错误消息:
ActionController::RoutingError (undefined method `after_commit' for ImagesController:Class
Did you mean? after_action):
Run Code Online (Sandbox Code Playgroud)
嗯,这很令人尴尬!似乎这个回调被弃用了!通过搜索,我尝试使用:after_create_commit,它给了我同样的错误.
第三步是尝试:after_action.这里提出了一个问题: 如何使其工作方式与:after_commit?
我已经尝试过apidock.com - 它真的很小!我也尝试过api.rubyonrails.org - 它是关于块的,但我不是一个了解它的红宝石忍者.所以我真的很感激你是否可以在它上面洒一些光!
ImagesController:
class ImagesController < ApplicationController
after_create_commit :take_image_to_album
def take_image_to_album
if check_album
add_inner_to_album(@image)
end
end
def create
@image = Image.create(image_params.merge(:user_id => current_user.id)
respond_to do |format|
unless @image.save
format.html { render :show, notice: "Error!" }
format.json { render json: @image.errors, status: :unprocessable_entity }
else
format.html
format.json { render :show, status: :ok, location: @image }
end
end
end
...
def add_inner_to_album(image)
contents …Run Code Online (Sandbox Code Playgroud) 我终于在一年后重新开始认真的软件开发并丢失了我的javascript参考书.对不起,如果这是一个愚蠢的问题,但我已经忘记了这个结束括号在javascript中的含义.
这是一些示例代码:
login: function (req, res) {
example.function('optionA', function (err, user) {
if (err) return res.send(err);
return res.send(user);
})(req, res);
});
Run Code Online (Sandbox Code Playgroud)
是(req,res)令我困惑的是,这究竟是如何起作用的?
提前致谢.现在感觉不像阿尔伯特爱因斯坦!
当我使用箭头函数作为回调函数时,我在下面的代码工作得很好
var getNumber = function (argument, callback) {
callback(argument - 1);
}
getNumber(10, (x)=>{
console.log(x); // x = 9
});
Run Code Online (Sandbox Code Playgroud)
现在当我想在下面的代码中将箭头函数更改为函数表达式时.
var getNumber = function (argument, callback) {
callback(argument - 1);
}
getNumber(10, action(x)); // x is not defined
function action(x){
console.log(x);
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是我得到错误说x没有定义.
callback ×10
javascript ×4
node.js ×2
android ×1
asynchronous ×1
binding ×1
c++ ×1
cell-array ×1
controller ×1
encoding ×1
event-bus ×1
events ×1
future ×1
grpc ×1
matlab ×1
matlab-gui ×1
python ×1
ruby ×1
tkinter ×1
winapi ×1