我正在尝试在从服务启动的Activity中创建一个Options菜单,然后根据来自通过Handler传递的Service的消息更改其UI.
我按如下方式设置了"选项"菜单:
/** Menu creation and setup **/
/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 0, "Speaker");
menu.add(0, 2, 0, "Mute");
return true;
}
/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
//Do something here
return true;
case 2:
//Do something here
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是当我的应用程序运行时它永远不会被调用.
我遇到了一些问题,我需要使用Handler来更改屏幕上的Text,因为信息是在错误的线程上传递的,同样的问题可能是菜单没有显示的原因吗?
是这样我怎么能解决它,因为我无法覆盖处理程序中的方法
我已将自定义(基于套接字)的服务器转换为IIS(.NET 4.0)中的HTTP处理程序.
我已将客户端转换为以正确格式发送HTTP GET.
我不想更改客户端的响应处理代码来解析HTML代码.这是后方的痛苦也是不必要的.我不需要此服务器与浏览器一起使用或与我的客户端以外的任何东西兼容.
所以,我基本上需要HTTP Handler(服务器)来发送客户端期望的响应 - 没有"HTML/1.0",标题和诸如此类的东西.
我目前正在使用HttpContext.Response.Write()方法.我认为有一种方法可以将原始数据写入响应,或者删除我想要发送的数据周围的所有标题和HTML标记.
在此先感谢您的帮助.戴夫
我在jQuery中有一个偶数,当他们点击它隐藏自己的DIV时.我的问题是它干扰它的SPAN,这意味着我必须在跨度之外单击并完全在DIV上.
我可以在点击DIV或其中的任何子元素时这样做吗,它会做什么事情?我以为它会像$('.item',this)或类似东西......
<div class="item">
<span>Testing</span>
</div>
$('.item').live('click', function(e) {
$(e.target).hide();
});
Run Code Online (Sandbox Code Playgroud) 在onKeyDown的基本活动中进行简单的覆盖,我能够捕获除了enter和dpad中心按钮之外的所有按键(通过断点确定).我不知道为什么 - 有人可以对这种情况有所了解吗?
编辑:快速更新 - 它确实捕获Dpad中心并输入关键LONG按下,但仍然不是正常的按下.
我是Java/JavaFX的新手(我昨天晚上开始).我正在构建一个动态GUI(crud)读取MySQL数据库.
问题是每当我使用event.getSource()(它是一个ActionEvent)并显示它时,我会得到类似"Button [id = 0,styleClass = button]"的内容.
问题1:有什么办法可以将id放在变量中吗?我无法将它从对象中解脱出来.
据我所知,我必须使用id,因为我不能做这样的事情"if(event.getSource()== somebutton){...}"因为每个生成的按钮都有相同的变量名.
现在,这是构建按钮的循环(在一个名为make_buttons的方法内).n_buttons是我想要构建的按钮数.
for(int counter = 0; counter < n_buttons; counter++){
String newtext = new String("btn"+counter);
Button btn = new Button();
btn.setText(newtext);
btn.setId(Integer.toString(counter));
btn.setOnAction(myHandler);
grid.add(btn,0,counter);
}
Run Code Online (Sandbox Code Playgroud)
请注意,我将按钮放在另一个上面的网格窗格上.
在那之前我有我的处理程序:
final EventHandler<ActionEvent> myHandler = new EventHandler<ActionEvent>(){
public void handle(final ActionEvent event) {
Object new_output = event.getSource();
System.out.println(new_output);
event.consume();
}
};
Run Code Online (Sandbox Code Playgroud)
问题2:那么,如何区分在我的特定情况下触发事件的按钮?
我知道很多编程语言(Matlab,R,Python,C,汇编等等......但我是业余爱好者),但这是我第一次使用GUI元素(Web语言和ActionScript 3除外) .在actionscript中,我可以像event.getCurrentTarget那样做,并使用它,就好像它是对象本身来读取id,属性等.
我到处寻找,找不到任何东西(也许我的术语有点近似......).
我在Eclipse Luna RCP中遇到了命令处理程序的问题.
在我的E4应用程序模型中,我定义了一些必须在某些情况下才能启用的命令和相关处理程序.出于这个原因,在我的处理程序POJO中,我实现了注释用于@CanExecute检查所需条件的方法.
我还定义了与这些命令相关的菜单和工具栏项.
问题是我的@CanExecute方法没有被正确调用,因此,菜单和工具栏项不会相应地启用/禁用.
特别是,对于菜单项,@CanExecute方法仅在应用程序启动时调用几次,但在此之后从不调用.
相反,对于工具栏项,@CanExecute仅在活动上下文更改时(例如,更改活动部件或打开新shell时)调用方法.
在开普勒,行为完全不同(并按预期工作):
@CanExecute每次显示菜单时都会调用这些方法@CanExecute每400ms 调用一次方法这是Luna中的已知错误吗?您知道任何可能的解决方法来实现预期的行为吗?
谢谢!
This Handler class should be static or leaks may occur (null)
Run Code Online (Sandbox Code Playgroud)
这个消息的'class'是指'MyActivity',因为Handler是一个对象,我确实声明它是静态的.我应该忽略它还是应该添加一些内容,例如'MyActivity'声明中的'static'(我试过这个并且出错了).我注意到这种棉绒警告通常建议使用'WeakReference'.
public class MyActivity extends Activity{
...
static Handler handler;
...
handler = new Handler()
{
public void handleMessage(Message msg) {
Run Code Online (Sandbox Code Playgroud) 我使用Visual Studio 2013创建了一个简单的拆分窗口应用程序.有两个视图,一个视图由default-view-class组成,另一个视图由from-view-class派生而来CScrollView.
/////////////////////////
// MainFrm.cpp
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext* pContext)
{
split_wnd.CreateStatic(this,1,2);
CRect cr;
GetClientRect(&cr);
split_wnd.CreateView(0,0,RUNTIME_CLASS(CProjectMainView),CSize(cr.Width()/2,cr.Height()),pContext);
split_wnd.CreateView(0,1,RUNTIME_CLASS(CMyCustomView),CSize(cr.Width()/2,cr.Height()),pContext);
return true;
}
Run Code Online (Sandbox Code Playgroud)
这个分离器工作正常.
当我尝试将ON_COMMAND处理程序添加到其中一个菜单项时,会出现问题.如果我将ON_COMMAND处理程序放在default-view-class中则没有问题.菜单项点击很好,处理程序工作.
但是,如果我将ON_COMMAND处理程序放在custom-view-class中,则菜单项根本不会启用.
我相信我已经做了一切,在我的自定义视图类中正确实现了消息映射.
/////////////////////////
// CMyCustomView.h
class CMyCustomView:public CScrollView
{
public:
DECLARE_DYNCREATE(CMyCustomView)
CMyCustomView();
~CMyCustomView();
virtual void OnDraw(CDC* /*pDC*/);
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual void OnInitialUpdate();
public:
DECLARE_MESSAGE_MAP()
afx_msg void OnMenuIdTestMessageMap();
};
Run Code Online (Sandbox Code Playgroud)
该DECLARE_MESSAGE_MAP()肯定是有在MyCustomView.h当然,我已经添加BEGIN_MESSAGE_MAP,END_MESSAGE_MAP()对在MyCustomView.cpp文件.
/////////////////////////
// CMyCustomView.cpp
BEGIN_MESSAGE_MAP(CMyCustomView,CScrollView)
ON_COMMAND(MENU_ID_TEST_MESSAGE_MAP,&CMyCustomView::OnMenuIdTestMessageMap)
END_MESSAGE_MAP()
void CMyCaptureView::OnMenuIdTestMessageMap()
{
// TODO: Add your …Run Code Online (Sandbox Code Playgroud) 如何更改错误页面" 哎呀,看起来出了问题. "?我想在错误文件夹中显示我的页面404 我的处理程序很简单:
public function render($request, Exception $e)
{
return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud) 我只想知道使用sendMessage (Message msg)和 之间的确切区别是什么post (Runnable r)。
由于这两种方法都将在Main UI Thread中运行,即使我们有单独的Runnable。
handler ×10
android ×4
events ×3
.net ×1
canexecute ×1
e4 ×1
eclipse-luna ×1
eclipse-rcp ×1
http ×1
java ×1
javafx-2 ×1
jquery ×1
laravel ×1
listener ×1
menuitem ×1
message-map ×1
mfc ×1
onkeydown ×1
options-menu ×1
runnable ×1